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

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

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

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

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

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# パーマリンク