내 사용자가 다른 사용자로 실행되도록 지시하는 방법이 있습니까?다른 사용자 (C#)로 코드 실행
PInvoke를 통해 NetUserSetInfo를 호출 중이므로이를 다른 사용자로 호출해야합니다. 그렇게 할 수있는 방법이 있습니까? 여기
기사에서 코드입니다 :내 사용자가 다른 사용자로 실행되도록 지시하는 방법이 있습니까?다른 사용자 (C#)로 코드 실행
PInvoke를 통해 NetUserSetInfo를 호출 중이므로이를 다른 사용자로 호출해야합니다. 그렇게 할 수있는 방법이 있습니까? 여기
기사에서 코드입니다 :가장을 일부 네이티브 API (즉, LogonUser)를 호출해야합니다 그래서 아마 3 페이지를 게시 가치가 없어 래퍼 코드. 이 페이지에는 완전한 작동 예제가 있습니다. http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/
위장시 중요한 보안 고려 사항이 있습니다. 모범 사례를 반드시 준수하십시오.
이 article 꽤 간결 설명
IntPtr accessToken = IntPtr.Zero;
....
//You have to initialize your accessToken with API calling
....
WindowsIdentity identity = new WindowsIdentity(accessToken);
WindowsImpersonationContext context = identity.Impersonate();
...
// Now your code is using the new WindowsLogin and you can do what ever this login can do
...
//Now you can return to your current login of Windows
context.Undo();
은 아마 최고의 내가 지금까지 본 가장 깨끗한 code 그냥 Github 또는 Nuget에 따라이
using (Impersonation.LogonUser(domain, username, password, logonType))
{
// do whatever you want as this user.
}
입니다.
이것은 구현하기가 쉬웠지만 제대로 작동하는지 확인할 수 없습니다. 나는 process.start ("cmd.exe") 프로세스를 수행하고 프로세스는 여전히 가장 된 ID가 아닌 프로그램을 시작한 ID가 소유하고 있음을 보여줍니다. 나는 무엇을 놓칠 수 있 었는가? –
예 가장은 다른 사용자로 일부 코드를 실행하는 데 도움이됩니다. 그것은 내 경우에 잘 작동합니다. (Milan Matějka에게 감사)
나는 또한 Ref 링크를 발견했다. 그것이 너겟에서 쉽게 패키지를 얻을 수 있기를 바랍니다 : http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html
기사의 코드가 사라졌습니다. –