Ho cercato di utilizzare LogonUser(...)
per ottenere un token di accesso per un account utente, come in this MSDN sample.Perché LogonUser (...) non funziona per gli account di dominio?
// 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);
Quando eseguo il campione (con privilegi di amministratore) funziona bene quando somministrato un dominio di .
e un nome utente e la password locale, ma non importa quello che faccio ad avere il codice di errore errore 1326 (Logon : nome utente sconosciuto o password errata) se provo a utilizzare un account di dominio. Ottengo lo stesso risultato se inserisco la spazzatura per il dominio, il che mi fa pensare se stia effettivamente contattando la DC.
Cosa potrebbe impedirsi di funzionare?
Questo potrebbe essere dovuto a un sacco di cose, purtroppo. La macchina è connessa al dominio? L'utente del dominio ha il permesso di accedere a quella macchina? Le impostazioni DNS sono configurate correttamente? (Ho visto un articolo di Citrix che suggeriva che questo potrebbe essere un problema.). Il seguente articolo contiene alcune informazioni su cosa sta accadendo quando si inserisce la spazzatura per il dominio: https://groups.google.com/group/microsoft.public.dotnet.languages.csharp/msg/dccfbf8b76120401?pli=1 –
Hai convalidato che questo funziona senza la chiamata a Console.ReadLine() (ad esempio, fornendo una password direttamente come stringa)? –
Non fa alcuna differenza da dove arriva la password - è una stringa quando viene passata a "LogonUser". – GraemeF