2010-09-02 48 views
1

我使用PrinciaplContext.ValidateCredentials來驗證一組針對本地計算機證書返回FALSE:PrincipalContext.ValidateCredentials總是與機ContextType在XP

string account = Context.ReadLine(); 
string pass = Context.ReadLine(); 

using (var context = new PrincipalContext(ContextType.Machine)) 
{ 
    bool valid = context.ValidateCredentials(account, pass); 

    Console.WriteLine("valid: " + (valid ? "true" : "false")); 
} 

控制檯應用程序正在執行作爲管理員,我試圖驗證管理員帳戶/密碼。該機器運行Windows XP,不屬於域。

不管密碼是正確還是不正確,在作爲域的一部分的不同Windows XP機器上運行相同的代碼始終返回true。如果我使用ContextType.Domain指定帳戶正確驗證的域。

ValidateCredentials是否僅適用於針對XP的Machine環境?有沒有其他錯誤我沒有在這裏考慮?

回答

2

PrincipalContext類是DirectoryServices命名空間的一部分。如果沒有域名,就沒有目錄。因此,如果XP機器不是域的成員,則對目錄進行認證的調用將失敗。

+0

我應該注意到,對於不是域成員的其他操作系統(例如Win7,Server2003,Server2008),驗證工作正常。 – 2010-09-02 19:25:32

+0

我不知道Win7,但我相信服務器版本已經使用本地目錄類服務進行身份驗證。這將解釋這種差異。 – 2010-09-02 19:33:18

+0

你可能是對的。最終,它看起來像我用它的東西,它不是爲了。 – 2010-09-02 21:07:53