2010-06-07 3 views
1

일부 네트워크 리소스에 액세스해야하는 LocalSystem으로 실행되는 Windows 서비스가 있습니다. OpenProcessToken으로 토큰을 검색하고 복제하여 WindowsIdentity.Impersonate을 호출하여 현재 로그온 한 사용자를 가장하는 방법을 찾았습니다. 그렇게하면 가장 된 사용자와 동일한 네트워크 리소스에 액세스 할 수 있습니다.LocalSystem 계정이 모든 사용자를 가장 할 수 있습니까? 사용자가 로그온하지 않은 경우에도?

그러나 로그온 한 사용자가있는 경우에만 내 서비스가 작동한다는 것을 의미합니다. LocalSystem이 시스템의 모든 권한을 가지고 있으므로 현재 기록되지 않은 사용자로 가장 할 수 있습니다. 에? 또는 암호를 몰라도 (로컬) 사용자로 로그온 할 수 있습니까? 가능하다면 어떻게 할 수 있습니까? 어떤 도움

+0

나는 명제와? 사이의 프랑스어 공간을 본다. :) "NetworkService"에 대한 제한이 있습니까? – serhio

+0

NetworkService를 시도하지는 않았지만 AFAIK이 계정은 LocalSystem보다 적은 권한을 가지고 있으므로 도움이 될지 모르겠습니다. –

+0

http://blogs.msdn.com/b/esiu/ archive/2005/07/19/eugene.aspx는 약간의 빛을 가져올 수 있습니다. – serhio

답변

0

문자열로 이름을 복용 WindowsIdentity 생성자를 사용해보십시오 사전에

감사합니다.

+0

필자의 경우에는 작동하지 않을 것입니다. 설명서에 다음 내용이 나와 있습니다. *이 생성자는 Windows Server 2003 도메인에만 가입 된 컴퓨터에서 사용하기위한 것입니다. 다른 도메인 유형에 대해서는 예외가 발생합니다. *. 분명히 나는 ​​다음과 같은 메시지로'SecurityException'을 얻었 기 때문에 Server 2003 도메인에 있지 않다. "잘못된 함수" –

+0

API 호출 CreateToken()을 사용하여 가능할 수도 있지만 결코 시도한 적이 없다고 생각합니다. – Amnon

관련 문제