2010-05-04 6 views
1

많은 포럼에서 사용자가 로그온하지 않아도 매핑 된 드라이브를 서비스에서 액세스 할 수 없다고 읽었습니다.서비스가 매핑 된 드라이브에 액세스 할 수 없음

질문 1) 로그인으로 서비스를 시도했는데 일부 계정과 그 계정에 네트워크 드라이브가 매핑되어 있습니다. 서비스가 여전히 액세스 할 수 없습니다. 왜?

질문 2) 동일한 서비스에서 다른 프로세스를 호출합니다. 프로세스가 어떤 사용자 계정에서 실행됩니까?

감사합니다.

답변

4

1) 대신 UNC 경로를 사용하면 매핑 된 드라이브 문자에 액세스 할 필요가 없습니다. 동일한 계정으로 실행 중일 때도 액세스 할 수없는 이유에 대해서는 실제 코드를 보지 않고도 말하기가 어렵습니다.

2) 프로세스를 시작하는 방법에 따라 다릅니다. ShellExecute() 또는 CreateProcess()을 사용하면 호출 스레드의 사용자 계정에서 실행됩니다. 당신이 CreateProcessAsUser(), CreateProcessWithLogonW(), 또는 CreateProcessWithTokenW()를 사용하는 경우, 그것은 당신이 전달 사용자 계정에서 실행됩니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 그러나 UNC 경로 대신 매핑 된 드라이브를 사용해야한다는 요구 사항이 있습니다. 내가 UNC 경로를 사용하여 노력하고 그 잘 작동합니다. 약 2) - 다음 시나리오를 시도했습니다. a) 서비스를 생성하고 일부 사용자로 실행 중입니다. b) 서비스 내에서 프로세스가 호출되었습니다. (Remy에 따르면 프로세스는 서비스에 제공된 것과 동일한 사용자 컨텍스트 내에서 실행되어야합니다.) c) 매핑 된 드라이브에 여전히 액세스 할 수 없습니다. :(내 잘못 긴급한 도움이 필요합니다. 감사합니다. – Rohit

+0

감사합니다 .많은 사람들이 Microsoft의 금지 사항을 무시하는 것을 보았습니다 .UNC 경로를 권장합니다. IIS도 매핑 된 드라이브를 지원하지 않습니다. http : //support.microsoft.com/kb/257174 –

+0

매핑 된 드라이브 문자가 UNC 경로에 매핑되므로 UNC 경로를 통해 매핑 된 드라이브 문자를 사용하면 아무런 이점이 없으므로이 상황에서이 요구 사항을 완화해야합니다. –

0

서비스가 XP에 매핑 된 드라이브에 액세스 할 수 이후, 매핑 된 드라이브는 사용자 당 자원이기 때문에, 그렇게하지 않습니다 로그인 한 사용자에 따라 달라집니다. 아무도 로그인하지 않았기 때문에 매핑 된 드라이브가 없을 수도 있습니다.

서비스가 드라이브 자체를 매핑 할 수 있습니다.

+0

그러나 사용자로 로그온하도록 서비스를 설정할 수 있습니다. 권리? – Rohit

+0

예. 그렇다고해서 서비스가 사용자 계정의 드라이브 문자 매핑에 액세스 할 수있는 것은 아닙니다. MSDN도 다음과 같이 말합니다. http://support.microsoft.com/kb/180362 –

+0

사실은 그렇지 않습니다. 로그온 한 사용자를 가장하면 드라이브 매핑에 액세스 할 수 있습니다. 하지만 UNC 경로를 사용하는 것이 더 간단하다고 생각합니다. – Luke

1

서비스 모드에서 JBoss를 실행하면서 비슷한 문제가 발생했습니다. 매핑 된 동일한 사용자에게 "다음 계정으로 로그온 :"옵션을 변경 한 후에도 Java 코드가 매핑 된 드라이브에 액세스 할 수 없었습니다. 드라이브.

그런 다음 동일한 서비스를 사용하여 드라이브를 매핑 할 수 있다면 작동해야한다는 것을 알았습니다.

마지막으로 service.bat 파일 맨 위에 간단한 명령을 추가하면 문제가 해결되었습니다.

net use x: \\SERVERNAME\SHARENAME 
+0

TFSBuildServiceHost 서비스에서 동일한 문제가 발생했습니다. – JohnZaj

관련 문제