おそらく、フォレスト(company.com)と2つの子ドメインあなたのケースではSITEとDEPARTMENT)。 SITEおよびDEPARTMENTビットは、ドメインのNetBIOS表現です。対応するDNS名と異なる点はよくありませんが、可能です。 OU:および「物理的な」Active Directoryサイトについては、話していないことを確認してください。ここでは、上記を想定し
は、オプションのカップルです:
以下は、アプリケーションが「フォレスト全体の読み取りアクセス」(あなたの異なるドメインにアクセスする能力)を持つアカウントで実行されていることを前提としています
DCに変換するdomain.company.com
using System.DirectoryServices.ActiveDirectory;
// ...
DirectoryContext directoryContext
= new DirectoryContext(DirectoryContextType.Domain, "DEPARTMENT");
Domain domain = Domain.GetDomain(directoryContext);
String domainName = domain.Name;
String domainComponent = "DC=" + domainName.Replace(".", ",DC=");
Console.WriteLine(domainComponent);
(私は「System.DirectoryServices-ビルトイン」を発見していない方法では、ドメイン、DC =会社、DC = comのが、上記の単純な文字列操作を行う必要があります=トリックです)
フォレストではないWi-Fiを使用している場合(または、DEPARTMENTとSITEが同じforrestのドメインではなく、自分自身でforrestsを分離している場合)、「DEPARTMENT」または「SITE」ストリングに応じて使用するユーザー名とパスワードのリストを維持する必要があります。
IPAddress[] addresses = Dns.GetHostAddresses("DEPARTMENT");
IPHostEntry host = Dns.GetHostEntry(addresses[0]);
Int32 dotIndex = host.HostName.IndexOf('.');
String domain =
host.HostName.Substring(dotIndex + 1, host.HostName.Length - dotIndex - 1);
Console.WriteLine(domain);
しかし、上記のことを前提としています。ドメイン名/コンポーネントは、あなたがの線に沿って何かを試みることができる得るために、異なるforrests /ドメインに結合することを望んでいないなら
// if(domainNetBios == "DEPARMENT")...
DirectoryContext directoryContext
= new DirectoryContext(DirectoryContextType.Domain,
"DEPARTMENT",
"UserInDEPARTMENT",
"PassForUserInDEPARTMENT");
NETBios-nameはDNS名の最初の部分と同じで、DNS解決が正しく機能しています。上記の作業は、ドメインコントローラのリストを照会し、DNS名からホスト名を削除することです。特にクリーンなオプションではありません...
華麗です!ありがとう。私はGlobalCatalogを使用しようとしましたが、私たちのドメインのいくつかはDNS表現でなければなりません... ADに実際にはありません... – davidsleeps
また、私は他の部分ではまったく同じreplace( "。"、 "DC =")を使用しています...これまでのところうまくいきました! – davidsleeps