2014-01-30 73 views
6

我在使用C++中的LogonUser()API函數時遇到了一些問題。我正在測試的計算機不在域中。我正在測試的帳戶存在於計算機上,但是當我提供無效域名時,它會驗證登錄名。LogonUser()當計算機不在域上時,無法驗證用戶是否爲無效域

這看起來並不適合我。

HANDLE token; 

if (!LogonUser("LocalUser", "InvalidDomain", "Password", 
       LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token)) 
{ 
    unsigned long error = GetLastError(); 
} 

這是正確的行爲嗎?

回答

6

我相信,域參數被忽略工作組成員不支持域登錄。這解釋了你所看到的。

您可以確認。嘗試使用真實域用戶進行身份驗證(確保不存在具有相同名稱的本地帳戶)。登錄應該失敗。

有一個例外。如果您使用LOGON32_LOGON_NEW_CREDENTIALS標誌(修改現有登錄而不是創建新標誌),那麼域登錄將始終成功,因爲它只有在嘗試訪問遠程資源時才進行身份驗證。

+0

我不這麼認爲。 'loginrc = LogonUser(L「jhadmin」,L「leohp」,L「jhadmin」,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hToken);'user(jhadmin)是一個真正的域用戶,但域名(leohp)是無效的。有效的域名是leohpc。但功能登錄成功! – LEo

+0

@LEo問題是關於一個工作組成員的計算機。想必你是在談論一個域名成員? – arx

+0

是的,但當用戶名(域用戶)和密碼正確時,LogonUser無法檢查無效的域名。爲什麼?這是正確的行爲? – LEo

相關問題