正在验证域上的用户

本文关键字:用户 验证 | 更新日期: 2023-09-27 18:26:55

我需要根据域验证用户名,这与此代码很好地配合使用。我面临的挑战是,当系统还不是域的一部分(在工作组中)时,找不到用户。(但系统已连接到域,因为我正在ping它,只是还不是它的一部分)

有人能帮我一下吗?当系统仍在工作组中时,我想验证域上的用户。

Ping domainserver = new Ping();
PingReply reply = domainserver.Send("ipadress domain server");
if (reply.Status == IPStatus.Success)
{
    using (var domianContext = new PrincipalContext(ContextType.Domain, "domain"))
    using (var foundUser = UserPrincipal.FindByIdentity(domianContext, IdentityType.SamAccountName, "username"))
        if (foundUser == null)
        {
            MessageBox.Show("Username is not found on the domain");
        }
        else
        {
         MessageBox.Show("Username is found on the domain");
        }
 }
else
{
    MessageBox.Show("It seems there is no network connection, please connect to the network first.");
}

正在验证域上的用户

处理Principal类抛出的异常比处理if更好。

例如,如果您不是域的一部分,则new PrincipalContext将失败。

try
{
    pc = new PrincipalContext(ContextType.Domain);
}
catch (PrincipalServerDownException ex)
{
    //Domain is not accesible.
}

根据您试图实现的实际目标,您还可以检查Environment.UserDomainName变量的内容

感谢您的回复,我找到了解决方案。当你在域上运行脚本时,你使用域凭据来执行,这就是它工作的原因。当您仍在工作组中时(在我的情况下),使用的帐户没有足够的权限查看域中是否存在用户名。这就是为什么它不起作用。