正在验证域上的用户
本文关键字:用户 验证 | 更新日期: 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
变量的内容
感谢您的回复,我找到了解决方案。当你在域上运行脚本时,你使用域凭据来执行,这就是它工作的原因。当您仍在工作组中时(在我的情况下),使用的帐户没有足够的权限查看域中是否存在用户名。这就是为什么它不起作用。