LoginSignup
25
25

More than 5 years have passed since last update.

ActiveDirectory で管理されているユーザーの情報を取得する

Last updated at Posted at 2015-05-08

まずはシンプルに、ドメインユーザーでログインしている場合に、表示名を条件にメールアドレスを取得する C# のサンプルコードです。

System.DirectoryServices.dll を使います。
参照の追加.png

var directoryEntry = new System.DirectoryServices.DirectoryEntry();
var directorySearcher = new System.DirectoryServices.DirectorySearcher(directoryEntry); //引数を渡さなくてもいいかも

var displayName = "山田太郎"; // 「*」をワイルドカードとして使える

directorySearcher.Filter = String.Format("(&(objectClass=user)(DisplayName={0}))", displayName);

var result = directorySearcher.FindOne();
// null -> 該当 user が見つからない

var entry = result.GetDirectoryEntry();

var mailAddress = (string)entry.Properties["mail"].Value;
// "" -> mail が登録されていない

アカウント名で検索する場合は
DisplayNamesamAccountName に変えればいいです。

アカウント名と表示名を OR で検索したい場合は、
DisplayName={0}|(samAccountName={0})(DisplayName={0}) にすればいいです。

逆にメールアドレスがわかっている場合は
DisplayName={0}mail={0} にすればいいです。

問い合わせ先のドメインを指定する場合は、
directoryEntry.Path = "LDAP://hoge.co.jp";
のように指定すればいけるようです。

このあたりは、 LDAP で検索をかけるといろいろ情報が出てきます。
(が、体系的にまとまった解りやすいサイトは見つけられませんでした)

メールアドレス以外の情報も entry.Properties に含まれているので
応用してみてください。

25
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25