2009-07-22 33 views

Respuesta

10

Este article lo explica muy brevemente:

He aquí un fragmento de código del artículo:

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(); 
+2

El código en el artículo se ha ido. –

20

probablemente la mejor y la más limpia code que he visto hasta ahora es este

using (Impersonation.LogonUser(domain, username, password, logonType)) 
{ 
    // do whatever you want as this user. 
} 

Simplemente sigue Github o Nuget.

+1

Esto ciertamente fue fácil de implementar pero no puedo validar que esté funcionando. Hago un process.start ("cmd.exe") y el proceso aún se muestra como propiedad de la ID que inició el programa, no el ID suplantado. ¿Qué podría estar perdiendo? –

Cuestiones relacionadas