0

以下の VB.NET に示すように、次の Active Directory 呼び出しを実行するアプリを実行しようとしているオフショア請負業者がいます。

  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) に参加しているコンピューターでコードを実行していて、そのドメインのユーザーとしてログインしているため、コードが機能します。2 行目の DirectoryEntry にアクセスするときは、プログラムを実行しているユーザーのコンテキストで行います。コンサルタントはドメイン内のアカウントを使用していないか持っていないため、アクセスできません。

簡単な説明:ネットワークにドメイン参加していないコンピューターで上記のコードを動作させるのは難しいでしょう (RootDSE の検索はそれに依存しているため)。コードの目的は、ドメイン名を取得し、グローバル カタログ (GC) 検索を行うことです。プログラムのさらに下に、ドメインに接続されていないシステムでは機能しない他のコードがあることがわかるでしょう。

代わりにこれをお勧めします:

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

ユーザー名とパスワードがドメイン内のサービス アカウントと一致する場所。こうすることで、コンサルタントはそのユーザーのコンテキストでドメインに接続し、必要な作業を実行できます。

于 2010-02-10T13:47:49.827 に答える