Próbowałem użyć LogonUser(...)
, aby uzyskać token dostępu dla konta użytkownika, tak jak w przypadku this MSDN sample.Dlaczego LogonUser (...) nie działa dla kont domeny?
// Call LogonUser to obtain a handle to an access token.
bool returnValue = LogonUser(userName, domainName, Console.ReadLine(),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
out safeTokenHandle);
Kiedy biegnę próbkę (z uprawnieniami administratora) to działa dobrze, gdy dana domenę .
i lokalną nazwę konta użytkownika i hasło, ale bez względu na to, co robię, mam kod błędu niewydolności 1326 (logowania : nieznana nazwa użytkownika lub złe hasło), jeśli próbuję użyć konta domeny. Otrzymuję taki sam wynik, jeśli wprowadzam śmieci do domeny, co sprawia, że zastanawiam się, czy faktycznie kontaktuje się z DC.
Co mogłoby powstrzymać to działanie?
To może być spowodowane niestety wieloma problemami. Czy urządzenie jest podłączone do domeny? Czy użytkownik domeny może logować się na tym komputerze? Czy ustawienia DNS są poprawnie skonfigurowane? (Widziałem artykuł Citrix, który sugerował, że to może być problem). Poniższy artykuł zawiera informacje o tym, co dzieje się po wpisaniu śmieci do domeny - https://groups.google.com/group/microsoft.public.dotnet.languages.csharp/msg/dccfbf8b76120401?pli=1 –
Czy sprawdzono, czy działa to bez wywołania Console.ReadLine() (np. dostarczając hasło bezpośrednio jako ciąg znaków)? –
Nie ma znaczenia, skąd pochodzi hasło - jest to ciąg znaków przekazywany do 'LogonUser'. – GraemeF