取得した Domain オブジェクトからドメイン関連情報を画面に表示してみました。(クリックすると新しいウィンドウで拡大図が表示されます。)
表示内容を4つのブロックに分けてます。
上半分はフォレストとドメインの2つに関する情報です。(参考:ドメインの図)
左下はサイトに関する情報です。(参考:サイトの図)
右下はFSMO(Flexible Single Master Operation:操作マスタ)の情報です。
Domain 関連のクラスは、ドメイン構造やサイト構造を反映する形でプロパティを持ってます。
画面に表示している内容(プロパティ)について簡単に説明します。
フォレスト(Forest クラス : Domain.Forest プロパティ)
フォレスト名 : Name プロパティ
フォレストモード : ForestMode プロパティ(ForestMode 列挙体)
ルートドメイン : RootDomain.Name プロパティ
グローバルカタログ : GlobalCatalogs プロパティ(GlobalCatalogCollection クラス)の各要素の Name プロパティ
サイト : 選択されたグローバルカタログ(GlobalCatalog クラス)の SiteName プロパティ
ドメイン : Domains プロパティの各要素(Domain クラス)の Name プロパティ
ドメイン(Domain クラス)
ドメイン名 : Name プロパティ
ドメインモード : DomainMode プロパティ(DomainMode 列挙体)
ドメインコントローラ : DomainControllers プロパティ(DomainControllerCollection クラス)の各要素の Name プロパティのホスト名部分
OS : 選択されたドメインコントローラ(DomainController クラス)の OSVersion プロパティ
IPアドレス : 同 IPAddress プロパティ
サイト : 同 SiteName プロパティ
サイト(ActiveDirectorySite クラス : Forest.Sites プロパティ(ReadOnlySiteCollection クラス)の各要素)
サイト名 : Forest.Sites プロパティ(ReadOnlySiteCollection クラス)の各要素の Name プロパティ
サーバ : 選択されたサイトの Servers プロパティ(ReadOnlyDirectoryServerCollection クラス)の各要素の Name プロパティ
サイトリンク : 同 SiteLinks プロパティ(ReadOnlySiteLinkCollection クラス)の各要素の Name プロパティ
コスト : 選択されたサイトリンク(ActiveDirectorySiteLink クラス)の Cost プロパティ
複製間隔 : 同 ReplicationInterval プロパティ(TimeSpan 構造体)
転送の種類 : 同 TransportType プロパティ(ActiveDirectoryTransportType 列挙体)
サブネット : 選択されたサイトの Subnets プロパティ(ActiveDirectorySubnetCollection クラス)の各要素の Name プロパティ
FSMO
スキーママスタ : Forest.SchemaRoleOwner.Name プロパティ
ドメイン名前付けマスタ : Forest.NamingRoleOwner.Name プロパティ
RID プールマスタ : Domain.RidRoleOwner.Name プロパティ
PDC エミュレータ : Domain.PdcRoleOwner.Name プロパティ
インフラストラクチャマスタ : Domain.InfrastructureRoleOwner.Name プロパティ
FSMO の各操作マスタはドメインコントローラなので、~RoleOwner プロパティは DomainController クラスです。
スキーママスタとドメイン名前付けマスタはフォレスト全体で1台なので、プロパティは Forest クラスのメンバになってます。
それ以外はドメインで1台なので、プロパティは Domain クラスのメンバになってます。
Windows アプリの場合は、ListBox のデータソースは、コレクションプロパティの各要素のリスト(~Collection を List<T> にキャストしたもの)にできます。なので、SelectedItem プロパティからオブジェクトを取得できます。
Web アプリの場合は、sessionState の mode を StateServer にする前提にしてるので、ListBox のデータソースは、コレクションプロパティの各要素の Name プロパティのリスト(List<string>)にしてます。
選択した項目に合わせて表示内容を更新するものについては、必要なプロパティ値を List クラスや Dictionary クラスで作っておいて、ViewState に保持するようにしてます。
ドメインコントローラのIPアドレスについては Web アプリの場合、ローカルホストだと「::1」と表示されてしまうことがあるので、なるべくちゃんとした形で表示できるよう処理する必要があります。これについては別途書きます。