ActiveDirecotryでログインユーザーがどのグループに属しているか調べる

実は、ActiveDirectry を扱うために DirectoryEntry, DirectorySearch なんかを駆使しないと駄目なのかなぁ、と思ったのですが、単純に現在ログインしているユーザーに関してならば、ローカルの Windows ユーザーをチェックすれば OK でした、というオチです。

# ActiveDirecotry 特有のプロパティを調べる場合は、DirectoryEntry などが必要になるのですが、 カレントユーザーのグループ名の列記だけならば、結構簡単に、という話です。

ユーザ名やドメイン名は、Environment のスタティックプロパティを利用します。
グループ名の一覧を取得する時は、NTAccount クラスにキャストして使います。

という訳で簡単にソースをば。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void Form1_Load(object sender, EventArgs e)
{
    string username = Environment.UserName;
    string domainname = Environment.UserDomainName;
 
    labelUser.Text = username;
    labelDomain.Text = domainname;
 
    // using System.Security.Principal;
    WindowsIdentity user =
        WindowsIdentity.GetCurrent();
 
    // 属しているグループ名一覧を取得
    listBox1.Items.Clear();
    foreach (var group in user.Groups)
    {
        // NTアカウントに変換
        NTAccount ac =
            (NTAccount)group.Translate(typeof(NTAccount));
        listBox1.Items.Add(ac.Value);
    }
    listBox1.Sorted = true;
}
カテゴリー: 開発, C# パーマリンク