グループの一覧を取得・表示して、選択したグループの詳細を表示する画面をサンプルアプリに追加しました。
左が Windows アプリで右が Web アプリです。(クリックすると新しいウィンドウで拡大図が表示されます。)
サンプルアプリは Windows フォームと Web フォームのプロジェクト及びクラスライブラリのプロジェクトがあります。
クラスライブラリ側には ドメイングループのスコープタイプを表す DomainGroupScopeType 列挙体、LocalGroup クラス、DomainGroup クラスを追加し、処理クラスである DirectoryAccess クラスにメソッドを4つ追加しました。
DomainGroupScopeType 列挙体は名前空間直下に作成し、メンバは次の4つです。
・BuiltInLocal = -2147483643
・DomainLocal = -2147483644
・Global = -2147483646
・Universal = -2147483640
名前からして判ると思いますが、セキュリティ グループです。値はセキュリティ グループの属性「groupType」と同じにしてます。
ビルトイン ローカル グループには Administrators や Users などクライアントPC やメンバサーバのローカル グループにもあるグループがあって、タイプとしてはドメイン ローカルの一種のようです。
管理ツール「Active Directory ユーザとコンピュータ」で Builtin コンテナを開いて、ビルトイン ローカル グループの一覧を見ても、種類は「セキュリティ グループ - ドメイン ローカル」となってます。
どうやらビルトイン ローカル グループを表すフラグ(値:1)を持ってるようです。
ビルトイン ローカル グループはスコープを変えることもできないし新しく作ることもできません。
また、グループの種類は2つあって、1つはセキュリティ グループ、もう1つは配布グループです。
グループは スコープ3つ × 種類2つ の計6種類作ることができます。
アクセス権を設定するためのグループなら セキュリティ グループを作ります。
上の BuiltInLocal を除く列挙値は ADSI の ADS_GROUP_TYPE_ENUM 列挙体の値の組合せになります。
ドメイン ローカル グループ(ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP)は4、グローバル グループ(ADS_GROUP_TYPE_GLOBAL_GROUP)は2、ユニバーサル グループ(ADS_GROUP_TYPE_UNIVERSAL_GROUP)は8です。配布グループの場合、属性「groupType」はこの値になります。
セキュリティ グループはこれに セキュリティ グループを表す ADS_GROUP_TYPE_SECURITY_ENABLED(-2147483648)が組み合わされてます。
他に追加した LocalGroup クラス、DomainGroup クラス、DirectoryAccess クラスのメソッドについては別途書きます。