많은 포럼에서 사용자가 로그온하지 않아도 매핑 된 드라이브를 서비스에서 액세스 할 수 없다고 읽었습니다.서비스가 매핑 된 드라이브에 액세스 할 수 없음
질문 1) 로그인으로 서비스를 시도했는데 일부 계정과 그 계정에 네트워크 드라이브가 매핑되어 있습니다. 서비스가 여전히 액세스 할 수 없습니다. 왜?
질문 2) 동일한 서비스에서 다른 프로세스를 호출합니다. 프로세스가 어떤 사용자 계정에서 실행됩니까?
감사합니다.
많은 포럼에서 사용자가 로그온하지 않아도 매핑 된 드라이브를 서비스에서 액세스 할 수 없다고 읽었습니다.서비스가 매핑 된 드라이브에 액세스 할 수 없음
질문 1) 로그인으로 서비스를 시도했는데 일부 계정과 그 계정에 네트워크 드라이브가 매핑되어 있습니다. 서비스가 여전히 액세스 할 수 없습니다. 왜?
질문 2) 동일한 서비스에서 다른 프로세스를 호출합니다. 프로세스가 어떤 사용자 계정에서 실행됩니까?
감사합니다.
1) 대신 UNC 경로를 사용하면 매핑 된 드라이브 문자에 액세스 할 필요가 없습니다. 동일한 계정으로 실행 중일 때도 액세스 할 수없는 이유에 대해서는 실제 코드를 보지 않고도 말하기가 어렵습니다.
2) 프로세스를 시작하는 방법에 따라 다릅니다. ShellExecute()
또는 CreateProcess()
을 사용하면 호출 스레드의 사용자 계정에서 실행됩니다. 당신이 CreateProcessAsUser()
, CreateProcessWithLogonW()
, 또는 CreateProcessWithTokenW()
를 사용하는 경우, 그것은 당신이 전달 사용자 계정에서 실행됩니다.
서비스가 XP에 매핑 된 드라이브에 액세스 할 수 이후, 매핑 된 드라이브는 사용자 당 자원이기 때문에, 그렇게하지 않습니다 로그인 한 사용자에 따라 달라집니다. 아무도 로그인하지 않았기 때문에 매핑 된 드라이브가 없을 수도 있습니다.
서비스가 드라이브 자체를 매핑 할 수 있습니다.
서비스 모드에서 JBoss를 실행하면서 비슷한 문제가 발생했습니다. 매핑 된 동일한 사용자에게 "다음 계정으로 로그온 :"옵션을 변경 한 후에도 Java 코드가 매핑 된 드라이브에 액세스 할 수 없었습니다. 드라이브.
그런 다음 동일한 서비스를 사용하여 드라이브를 매핑 할 수 있다면 작동해야한다는 것을 알았습니다.
마지막으로 service.bat 파일 맨 위에 간단한 명령을 추가하면 문제가 해결되었습니다.
net use x: \\SERVERNAME\SHARENAME
TFSBuildServiceHost 서비스에서 동일한 문제가 발생했습니다. – JohnZaj
빠른 답장을 보내 주셔서 감사합니다. 그러나 UNC 경로 대신 매핑 된 드라이브를 사용해야한다는 요구 사항이 있습니다. 내가 UNC 경로를 사용하여 노력하고 그 잘 작동합니다. 약 2) - 다음 시나리오를 시도했습니다. a) 서비스를 생성하고 일부 사용자로 실행 중입니다. b) 서비스 내에서 프로세스가 호출되었습니다. (Remy에 따르면 프로세스는 서비스에 제공된 것과 동일한 사용자 컨텍스트 내에서 실행되어야합니다.) c) 매핑 된 드라이브에 여전히 액세스 할 수 없습니다. :(내 잘못 긴급한 도움이 필요합니다. 감사합니다. – Rohit
감사합니다 .많은 사람들이 Microsoft의 금지 사항을 무시하는 것을 보았습니다 .UNC 경로를 권장합니다. IIS도 매핑 된 드라이브를 지원하지 않습니다. http : //support.microsoft.com/kb/257174 –
매핑 된 드라이브 문자가 UNC 경로에 매핑되므로 UNC 경로를 통해 매핑 된 드라이브 문자를 사용하면 아무런 이점이 없으므로이 상황에서이 요구 사항을 완화해야합니다. –