準備
VisualStudioでプロジェクトを作って下さい。
で、参照設定で以下の二つを追加します。
実装
例外処理はいい加減。
using System;
using System.DirectoryServicies;
using ActiveDS;
class Program {
static void Main () {
Console.WriteLine(MyMailAddress);
}
static string MyMailAddress {
get {
try {
using (DirectoryEntry DE = new DirectoryEntry(string.Format("LDAP://{0}", new ADSystemInfo().UserName))) {
return DE.Properties["mail"].Value as string;
}
}
catch {
return null;
}
}
}
}
解説
- ADSystemInfoをインスタンス化すると、ログインユーザの情報が取得できる
- その中のUserNameプロパティは、ActiveDirectory環境に於いてはそのユーザのdn(=distinguishedName)が入っている
- dnはActiveDirectory内での一意な識別名である
- DirectoryServiceのコンストラクタに『
LDAP://dn名
』 を渡すと一発でディレクトリエントリが取れる
※条件を考えたり複数オブジェクトがヒットしたらどうしよう、とか余計な事を考えずに済む - で、そこから
mail
プロパティにアクセスすればおっけー、と云う訳 - 勿論、他のプロパティにアクセスしても良いですよ
以上