Czy istnieje sposób na poinformowanie mojego kodu, aby działał jako inny użytkownik?Uruchom kod jako inny użytkownik (C#)
Nazywam NetUserSetInfo przez PInvoke i muszę go nazwać innym użytkownikiem. Czy jest jakiś sposób na zrobienie tego?
Czy istnieje sposób na poinformowanie mojego kodu, aby działał jako inny użytkownik?Uruchom kod jako inny użytkownik (C#)
Nazywam NetUserSetInfo przez PInvoke i muszę go nazwać innym użytkownikiem. Czy jest jakiś sposób na zrobienie tego?
personifikacji wymaga wywoływania niektórych rodzimych interfejsów API (tj LogonUser), więc to chyba nie warto delegowania 3 strony kod opakowania. Ta strona ma pełną roboczą próbkę: http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/
Pamiętaj, że podszywanie się ma ważne względy bezpieczeństwa. Upewnij się, że postępujesz zgodnie ze sprawdzonymi metodami.
Ten article wyjaśnia to dość zwięźle:
Oto fragment kodu z artykułu:
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();
Prawdopodobnie najlepszy i najczystszy code które widziałem do tej pory jest to
using (Impersonation.LogonUser(domain, username, password, logonType))
{
// do whatever you want as this user.
}
To z pewnością było łatwe do wdrożenia, ale nie mogę potwierdzić, że działa. Wykonuję process.start ("cmd.exe"), a proces nadal jest wyświetlany jako należący do identyfikatora, który uruchomił program, a nie podanego identyfikatora. Czego mógłbym zabraknąć? –
Tak Podszywanie się pomaga w uruchomieniu kodu jako innego użytkownika. W moim przypadku działa dobrze. (Dzięki Milan Matějka)
Znalazłem również link Ref. Mam nadzieję, że pomoże ci łatwo uzyskać pakiet z nuget: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html
Kod w artykule zniknął. –