2014-03-13 2 views
3

현재 개발중인 Windows 서비스를 설치하고 있습니다. 네트워크 서비스로 실행되도록 설정되었습니다. 이 서비스를 시작하려고하면 액세스가 거부되었다는 메시지 상자가 나타납니다. 그러나 네트워크 서비스는 실행 파일과이 파일이 들어있는 전체 디렉터리에 대한 액세스 권한을 가지고 있습니다.관리자가 아닌 Windows 서비스를 시작하면 '액세스가 거부되었습니다.'가 나타납니다.

또한 서비스를 로컬 서비스 및 로컬 시스템으로 시작하려고했지만 두 가지 모두 동일한 오류가 발생합니다. 어떤 오류도 발생하지 않으며 관리자로 실행하면 예상대로 서비스가 시작됩니다 (로그인 한 계정이기도 함).

이벤트 로그를 살펴 보았지만 '액세스가 거부되었습니다.'같은 정보가 포함 된 항목이 하나뿐입니다.

procmon에서 액세스하려고 시도한 내용을 확인했으며 서비스 관리자가 실행 파일을 열려고 할 때 액세스가 거부되었습니다. 비록 그것이 완전히 액세스 할 수 있습니다.

왜 실행 파일에 대한 액세스가 거부 되었습니까? 아래는 실행 파일 사용 권한의 스크린 샷, 서비스를 시작하려고 할 때의 procmon의 출력 및 ACCESS DENIED를 준 첫 번째 CreateFile의 세부 정보입니다.

Permissions

Procmon list

Procmon details

+1

.exe의 권한과 관련이 없으므로 서비스를 중지하고 시작할 수있는 권한이 있어야합니다. –

+0

@a_horse_with_no_name : 실제 관리자 계정으로 로그인했습니다. 권한이 있기를 바랍니다. –

+0

죄송합니다. 의도 한대로 나오지 않았습니다. 서비스를 시작할 권한이 있습니다. 이 오류는 네트워크 서비스 (또는 비 관리자) 계정이 특정 액세스 권한으로 실행 파일을 열려고 시도 할 때 발생합니다. –

답변

3

문제는 실제로 서비스 실행 파일이 EFS로 암호화 된 것이 었습니다; 오류 코드 (액세스가 거부 됨)가 나를 버렸다.

실수로 암호화 된 폴더에 서비스가 출력되었으므로 서비스를 설치 위치에 복사 할 때 암호화 된 상태로 남아 있습니다. 파일의 속성에서 '데이터 보안을 위해 내용을 암호화'확인란의 선택을 취소하면 서비스가 모든 사용자에게 올바르게 시작되었습니다.

이 설명은 권한이 부여 된 '로컬 시스템'계정을 포함하여 시스템 사용자가 아닌 현재 사용자로만 서비스가 시작되는 이유를 설명합니다.