gpt4 book ai didi

c# - 如何检查域中是否存在 Windows 用户帐户名?

转载 作者:太空狗 更新时间:2023-10-29 19:40:14 25 4
gpt4 key购买 nike

在 C# 中检查 Windows 用户帐户名是否存在的最简单和最有效的方法是什么?这是在域环境中。

  • 输入:[域]/[用户]格式的用户名(例如“mycompany\bob”)
  • 输出:如果用户名存在则为真,否则为假。

我确实找到了 this article但是那里的示例与验证和操作用户帐户有关,它们假设您已经拥有用户专有名称,而我从用户帐户名开始。

我确信我可以使用 AD 来解决这个问题,但在我这样做之前,我想知道是否有一个简单的高级 API 可以满足我的需要。

* 更新 *

可能有很多方法可以做到这一点,Russ 发布了一个可行的方法,但我不知道如何调整它以在我的环境中工作。我确实找到了一种不同的方法,即使用为我完成这项工作的 WinNT 提供程序:

    public static bool UserInDomain(string username, string domain)
{
string path = String.Format("WinNT://{0}/{1},user", domain, username);

try
{
DirectoryEntry.Exists(path);
return true;
}
catch (Exception)
{
// For WinNT provider DirectoryEntry.Exists throws an exception
// instead of returning false so we need to trap it.
return false;
}
}

附言对于那些不熟悉上面使用的 API 的人:您需要添加对 System.DirectoryServices 的引用才能使用它。

我找到的链接帮助了我:How Can I Get User Information Using ADSI这些示例使用 ADSI,但也可以应用于 .NET DirectoryServices。它们还演示了可能有用的用户对象的其他属性。

最佳答案

System.DirectoryServices本文中的命名空间正是您为此目的所需要和预期的。如果我没记错的话,它是 Active Directory Server Interfaces 的包装器串口接口(interface)

编辑:

像下面这样的事情应该可以做到(它可能需要一些检查和处理)。它将使用当前安全上下文的域来查找域 Controller ,但这可以很容易地修改为传入命名服务器。

public bool UserInDomain(string username, string domain)
{
string LDAPString = string.Empty;
string[] domainComponents = domain.Split('.');
StringBuilder builder = new StringBuilder();

for (int i = 0; i < domainComponents.Length; i++)
{
builder.AppendFormat(",dc={0}", domainComponents[i]);
}
if (builder.Length > 0)
LDAPString = builder.ToString(1, builder.Length - 1);

DirectoryEntry entry = new DirectoryEntry("LDAP://" + LDAPString);

DirectorySearcher searcher = new DirectorySearcher(entry);

searcher.Filter = "sAMAccountName=" + username;

SearchResult result = searcher.FindOne();

return result != null;
}

并用以下测试

Console.WriteLine(UserInDomain("username","MyDomain.com").ToString());

关于c# - 如何检查域中是否存在 Windows 用户帐户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com