PrincipalContext.ValidateCredentials始终在XP上使用Machine ContextType返回False

时间:2010-09-02 19:17:09

标签: c# .net windows windows-xp

我正在使用PrinciaplContext.ValidateCredentials来针对本地计算机验证一组凭据:

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的机器上下文中不起作用?还有其他问题我不在这里吗?

1 个答案:

答案 0 :(得分:2)

PrincipalContext类是DirectoryServices命名空间的一部分。如果没有域名,就没有目录。因此,如果XP计算机不是域的成员,则对目录进行身份验证的调用将失败。