验证域上的用户

时间:2015-12-15 14:34:43

标签: c# validation dns

我需要针对域验证用户名,并且该代码可以正常工作。我面临的挑战是,当系统不是域的一部分(在工作组中)时,找不到用户。 (但系统已连接到域,因为我正在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.");
}

2 个答案:

答案 0 :(得分:0)

最好使用从Principal类抛出的异常,而不是使用ifs。

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

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

根据您要实现的实际情况,您还可以查看Environment.UserDomainName变量

的内容

答案 1 :(得分:0)

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