【发布时间】:2009-08-25 17:47:29
【问题描述】:
在 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。它们还演示了用户对象的其他可能有用的属性。
【问题讨论】:
-
喜欢新版本,速度超快,正是我所需要的。谢谢!