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

标签 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 的机器上下文中不起作用?还有什么我没有在这里说明的问题吗?

最佳答案

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

关于c# - PrincipalContext.ValidateCredentials 在 XP 上始终使用 Machine ContextType 返回 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630415/

相关文章:

c# - Kendo UI MVC 网格选择更新单独的控件

c# - 按范围对数据进行分组以制作直方图

c# - .NETCore 4.5.1 中是否缺少 GetTypeInfo?

c# - 哪些程序集在 "found conflict between different versions"中发生冲突?

c++ - 为什么 ETW EventWriteString 有二进制负载

windows - 来自命令行的 Sublime Text

c++ - 通过网络创建文件

c# - Outlook 插件部署线程

javascript - 如何避免页面刷新时调用js函数

c# - 如何继续将整数添加到列表中,同时查看这些整数是否已经在列表中?