gpt4 book ai didi

c# 通过 LDAP 针对 Active Directory

转载 作者:行者123 更新时间:2023-11-30 13:25:13 26 4
gpt4 key购买 nike

我正在编写一些针对 Active Directory 的 C# 代码,并且一直在无休止地尝试让它工作但无济于事。以下代码有效,而其后的代码无效:

下面的代码使用 "WinNT://"+ Environment.MachineName + ",Computer"建立连接并且工作正常。

   DirectoryEntry localMachine = new DirectoryEntry
("WinNT://" + Environment.MachineName + ",Computer");

DirectoryEntry admGroup = localMachine.Children.Find
("Administrators", "group");

object members = admGroup.Invoke("members", null);

foreach (object groupMember in (IEnumerable)members)
{
DirectoryEntry member = new DirectoryEntry(groupMember);
output.RenderBeginTag("p");
output.Write(member.Name.ToString());
output.RenderBeginTag("p");
}



base.Render(output);

我现在正在尝试更改行:

"WinNT://" + Environment.MachineName + ",Computer"

"LDAP://MyDomainControllerName"

但似乎无论我尝试使用什么值来代替值“MyDomainControllerName”,它都不会起作用。

为了获取“MyDomainControllerName”值,我右键单击 MyComputer 并按照其他地方的建议复制计算机名称值,但这没有用。


当我尝试使用上面的 LDAP://RootDSE 选项时,它会导致以下错误:

位于路径 LDAP://RootDSE 的 Active Directory 对象不是容器

这是您提到的成员方法的问题吗?

最佳答案

是的 - RootDSE 不是容器 - 但它包含许多您可以查询的有趣属性 - 例如您的域 Controller 的名称。

您可以使用如下代码检查这些内容:

DirectoryEntry deRoot = new DirectoryEntry("LDAP://RootDSE");

if (deRoot != null)
{
Console.WriteLine("Default naming context: " + deRoot.Properties["defaultNamingContext"].Value);
Console.WriteLine("Server name: " + deRoot.Properties["serverName"].Value);
Console.WriteLine("DNS host name: " + deRoot.Properties["dnsHostName"].Value);

Console.WriteLine();
Console.WriteLine("Additional properties:");
foreach (string propName in deRoot.Properties.PropertyNames)
Console.Write(propName + ", ");
Console.WriteLine();
}

或者省去麻烦,去获取我的 C# 源代码中的“Beavertail ADSI Browser”- 详细展示了如何连接到 RootDSE 以及它提供的功能。

关于c# 通过 LDAP 针对 Active Directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469588/

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