2009-07-15 5 views
1

Active Directoryのドメイン名のActive Directoryパスを簡単に解決する方法はありますか?Active Directoryのドメイン名を解決する[.net]

など。あなたのユーザーアカウントはSITE \ユーザー名またはDEPARTMENT \ユーザー名かもしれませんが、ドメインSITEの実際のパスはsite.company.comかもしれません.DEPARTMENTはdep.company.comとなるかもしれません。

DEPARTMENTをActive Directoryで正しく検索するためにDC = dep、DC = company、DC = comなどに変換します。

答えて

2

おそらく、フォレスト(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名からホスト名を削除することです。特にクリーンなオプションではありません...

+0

華麗です!ありがとう。私はGlobalCatalogを使用しようとしましたが、私たちのドメインのいくつかはDNS表現でなければなりません... ADに実際にはありません... – davidsleeps

+0

また、私は他の部分ではまったく同じreplace( "。"、 "DC =")を使用しています...これまでのところうまくいきました! – davidsleeps

関連する問題