Esiste un modo per indicare al mio codice di essere eseguito come un altro utente?Esegui codice come utente diverso (C#)
Sto chiamando NetUserSetInfo tramite un PInvoke e ho bisogno di chiamarlo come un altro utente. C'è un modo per farlo?
Esiste un modo per indicare al mio codice di essere eseguito come un altro utente?Esegui codice come utente diverso (C#)
Sto chiamando NetUserSetInfo tramite un PInvoke e ho bisogno di chiamarlo come un altro utente. C'è un modo per farlo?
rappresentazione richiede di chiamare alcuni API native (vale a dire, LogonUser) quindi è probabilmente non vale la pena distacco 3 pagine di codice wrapper. Questa pagina ha un esempio funzionante completo: http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/
Si noti che la rappresentazione ha importanti considerazioni di sicurezza. Assicurati di seguire le migliori pratiche.
Questo article spiega abbastanza succintamente:
Ecco un frammento di codice da questo articolo:
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();
Probabilmente il migliore e il più pulito code che ho visto finora è questo
using (Impersonation.LogonUser(domain, username, password, logonType))
{
// do whatever you want as this user.
}
Questo è stato certamente facile da implementare ma non posso confermare che funzioni. Faccio un process.start ("cmd.exe") e il processo continua a essere di proprietà dell'ID che ha avviato il programma, non l'ID rappresentato. Cosa potevo mancare? –
Sì La rappresentazione aiuta a eseguire codice come utente diverso. Funziona bene nel mio caso. (Grazie a Milan Matějka)
Ho anche trovato un collegamento Ref. Spero che ti aiuti a ottenere facilmente il pacchetto da nuget: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html
Il codice nell'articolo è sparito. –