0

我们有离岸承包商正在尝试运行执行以下 Active Directory 调用的应用程序,如下 VB.NET 所示

  Dim objRootDSE As New DirectoryEntry("LDAP://RootDSE")
  Return "GC://" & Replace(Replace(objRootDSE.Properties("rootDomainNamingContext").Value().ToString, ",", "."), "DC=", "") 'DC=uis,DC=unisys,DC=com  

该代码在函数返回行返回错误,表明它无法联系服务器,当它在本地为我工作时,它是“DC=uis,DC=unisys,DC=com”

承包商通过 VPN 连接到我们公司的内部网络,并且通常可以访问完整的网络,所以我不知道为什么他们应该无法联系到这个服务器。

其他位置的其他离岸用户使用相同的代码没有问题。

我对AD几乎一无所知。有人可以给我一个线索吗?

4

1 回答 1

1

该代码适用于您,因为您在加入您的域 (uis.unisys.com) 的计算机上运行它,并且您以该域中的用户身份登录。当您在第二行访问 DirectoryEntry 时,您是在用户执行程序的上下文中执行此操作的。因为顾问不在您的域中使用/拥有帐户,所以他们无权访问。

简化说明:您会发现很难让上面的代码在任何未加入您的网络的域的计算机上运行(因为查找 RootDSE 依赖于此)。您的代码的目的是获取域名并进行全局目录 (GC) 搜索。您很可能会发现程序中的其他代码在未连接到您的域的系统上不起作用。

我建议这样做:

Dim objRootDSE As New DirectoryEntry("GC://uis.unisys.com", "username", "password")

用户名和密码与您域中的服务帐户匹配的位置。这样,顾问可以在该用户的上下文中连接到您的域并执行所需的工作。

于 2010-02-10T13:47:49.827 回答