2016-06-02 2 views

답변

2

예, 불가능합니다. 드라이브 매핑은 대화 형 로그온 중에 만 설정됩니다. ImpersonateLoggedOnUser 함수는 사용자의 로그온 세션 전체를 가장하여 보안 컨텍스트로 가장합니다. 가장을 사용하여 수행 할 수없는 것은 one of the many things입니다.

난 당신이 (그들의 대화 형 프로세스 중 하나에서 얻은) 사용자의 로그인 토큰을 복제 한 다음 CreateProcessAsUser 함수를 호출하는 것을 사용하여이 작업을 수행 할 수있을 것 같아요. 그런 다음 매핑 된 네트워크 드라이브에서 작동하는 프로세스를 시작합니다. 나는 한번도 해 본 적이 없기 때문에 이것이 효과가 있다는 것을 확신 할 수는 없지만 이론적으로는 가능할 것 같습니다.

물론, 왜 그런 단호한 경로를 따라야하는지에 대한 질문을 제기합니다. 사용자의 대화 형 프로세스에서 코드를 실행하여 표준 Windows 응용 프로그램으로 시작하는 것이 현명하게 더 현명 할 것입니다.

이것은 서비스가하도록 설계된 것이 아닙니다. 서비스는 매핑 된 네트워크 드라이브를 지원하지 않습니다. 서비스 내에서 네트워크 리소스에 액세스하려면 UNC 경로 만 사용해야합니다.

+1

다른 사람이 가장 할 때 잘못 될 수있는 단어가 몇 개 더 있습니다. [가장 할 때이 작업이 작동합니까? 기본 대답은 [아니오]입니다 (https://blogs.msdn.microsoft.com/oldnewthing/20110928-00/?p=9533). – IInspectable

+0

감사! 나는 어떻게 든 그 블로그 포스트를 놓쳤거나 완전히 잊어 버렸습니다. 나는 Raymond가 이것에 관해 썼을 것으로 예상 했어야했다! 가시성을 높이기 위해 내 대답에 링크를 포함 시켰습니다. –

+0

서비스에 대한 또 다른 권위있는 [출처] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms685143.aspx) 및 리디렉션 된 드라이브를 사용할 수없는 이유. ("[R] edirected 드라이브는 다른 사용자 계정으로 실행되는 프로세스간에 공유 할 수 없습니다.") – theB

관련 문제