我一直在嘗試使用LogonUser(...)
來獲取用戶帳戶的訪問令牌,如this MSDN sample。爲什麼LogonUser(...)不適用於域帳戶?
// 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);
當我運行示例(具有管理員權限)給出的.
域和本地用戶帳戶名和密碼時,它工作正常,但無論我做什麼,我得到錯誤代碼1326(登錄失敗:未知的用戶名或密碼錯誤)如果我嘗試使用域帳戶。如果我爲域輸入垃圾,我會得到相同的結果,這讓我懷疑它是否實際上與DC聯繫。
有什麼可以阻止這個工作?
這可能是由於一堆事情不幸的緣故。機器是否連接到域?域用戶是否允許登錄到該機器? DNS設置配置是否正確? (我看過一篇Citrix文章,認爲這可能是一個問題。)。下面的文章有一些信息,當你爲域輸入垃圾時發生了什麼 - https://groups.google.com/group/microsoft.public.dotnet.languages.csharp/msg/dccfbf8b76120401?pli=1 –
你有沒有驗證這可以在沒有Console.ReadLine()調用的情況下工作(例如直接提供密碼作爲字符串)? –
密碼來自哪裏並沒有什麼區別 - 當它傳遞給LogonUser時,它是一個字符串。 – GraemeF