gpt4 book ai didi

c# - 如何确定 "DirectoryEntry"是否找到了我的用户?

转载 作者:行者123 更新时间:2023-11-30 15:09:54 28 4
gpt4 key购买 nike

我正在使用这种在当前域中查找用户的简单方法,它适用于“存在”的所有用户,但我找不到任何方法来确定该用户是否不存在。

string userLDAP = @"MYDOMAIN/username";
string path = "WinNT://" + userLDAP ;
DirectoryEntry root = new DirectoryEntry(path, null, null, AuthenticationTypes.Secure);

除了抛出异常,我如何使用目录条目来确定用户是否不存在?

 if (root.Properties != null)
if (root.Properties["objectSid"] != null) //// EXCEPTION HERE
if (root.Properties["objectSid"][0] != null)

最佳答案

为此目的最好使用 DirectorySearcher...

 string userName = "TargetUserName";

using (DirectorySearcher searcher = new DirectorySearcher("GC://yourdomain.com"))
{
searcher.Filter = string.Format("(&(objectClass=user)(sAMAccountName={0}))", userName);

using (SearchResultCollection results = searcher.FindAll())
{
if (results.Count > 0)
Debug.WriteLine("Found User");

}
}

此示例将搜索整个森林,包括子域。如果您只想定位单个域,请使用“LDAP://mydomain.com”而不是“GC://mydomain.com”。您还可以为 searcher.SearchRoot 提供 DirectoryEntry 以用作搜索的根(即特定的 OU 或域)。

不要忘记大部分 AD 内容都是 IDisposable,因此请按照上图正确处理。

关于c# - 如何确定 "DirectoryEntry"是否找到了我的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841866/

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