使用 DirectorySearcher 按 GUID 搜索 Active Directory 组

发布于 2025-01-11 17:01:24 字数 469 浏览 0 评论 0原文

我使用 DirectorySearcher 通过其(对象)GUID 查找 AD 安全组。

到目前为止,这是我的代码:

using (var container = new DirectoryEntry("LDAP://host:port/DC=X,DC=Y", User, Pass, AuthenticationType)
{
   using (var searcher = new DirectorySearcher(container))
   {
      searcher.Filter = $"(objectguid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)"

      var result = searcher.FindOne();
   }
}

不幸的是,结果总是返回 null,并且我无法更改 DirectoryEntry 的路径。

I'm using DirectorySearcher to find an AD security group by its (object) GUID.

Here's my code so far:

using (var container = new DirectoryEntry("LDAP://host:port/DC=X,DC=Y", User, Pass, AuthenticationType)
{
   using (var searcher = new DirectorySearcher(container))
   {
      searcher.Filter = 
quot;(objectguid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)"

      var result = searcher.FindOne();
   }
}

Unfortunately the result always returns null, and I cannot change the DirectoryEntry's path.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仙气飘飘 2025-01-18 17:01:24

要使用 objectGuid 进行查询需要一种特殊的格式,我现在不太记得了,但它很复杂。

但还有更好的方法。您可以使用 GUID 直接绑定到对象,而无需使用以下格式进行搜索:

var result = new DirectoryEntry("LDAP://host:port/<GUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX>", User, Pass, AuthenticationType)

有关详细信息,请参见:使用 objectGUID 绑定到对象

您也可以对 SID 执行相同的操作:使用 a 绑定到对象SID

To make a query using objectGuid requires a special format that I don't quite remember right now, but it's complicated.

But there's a better way. You can bind directly to the object using the GUID, without searching, by using this format:

var result = new DirectoryEntry("LDAP://host:port/<GUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX>", User, Pass, AuthenticationType)

More information on that here: Using objectGUID to Bind to an Object

You can do the same with the SID as well: Binding to an Object Using a SID

凹づ凸ル 2025-01-18 17:01:24

为了匹配活动目录格式,我找到了以下解决方案:

Guid groupId = new Guid("ed0ec41e-38f9-4826-bfe9-25946bf795ae")
string activeIdFormat = string.Join('\\', BitConverter
            .ToString(groupId.ToByteArray())
            .Split("-"))
        .Insert(0, "\\");

// "\\1E\\C4\\0E\\ED\\F9\\38\\26\\48\\BF\\E9\\25\\94\\6B\\F7\\95\\AE"
string searchFilter=$"(&(objectCategory=group)(objectGUID={activeIdFormat}))";

In order to match the active directory format, I have found the following solution:

Guid groupId = new Guid("ed0ec41e-38f9-4826-bfe9-25946bf795ae")
string activeIdFormat = string.Join('\\', BitConverter
            .ToString(groupId.ToByteArray())
            .Split("-"))
        .Insert(0, "\\");

// "\\1E\\C4\\0E\\ED\\F9\\38\\26\\48\\BF\\E9\\25\\94\\6B\\F7\\95\\AE"
string searchFilter=
quot;(&(objectCategory=group)(objectGUID={activeIdFormat}))";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文