アクティブディレクトリ連携

投稿者: | 2010年11月3日

注意:備忘録です。

今の職場はAD管理しているので、各ユーザの情報をツール毎にいちいちテーブル作って管理するという悪しき習慣を失くすためにAD連携用のクラスを作って使いまわすことにしました。

んで調べた結果がしたのやつ。本当はログインユーザのメールアドレスを取得したかっただけなんだが序でにとれる情報は全部取ることにした。

 

    Dim domain As String = Environment.UserDomainName   ' ドメイン名

    Dim uName As String = Environment.UserName          ' ユーザー名

    Dim path As String

  '例 hoge@hogehoge アクティブディレクトリのアドレス

    path = "LDAP://IP/DC=hoge,DC=hogehoge"

    Dim root As New DirectoryEntry(path)

    Dim schr As New DirectorySearcher(root)

    schr.SearchScope = SearchScope.Subtree

    schr.Filter = "(&(objectCategory=person)(sAMAccountName=" & Environment.UserName & "))"

  'ここで取得したい項目を設定しとく 
    schr.PropertiesToLoad.Add("mail") 'メールアドレス
 
    schr.PropertiesToLoad.Add("Title") '役職?
 
    schr.PropertiesToLoad.Add("Department") '部門名

    schr.PropertiesToLoad.Add("Company") '会社名

    Dim sr As SearchResult = schr.FindOne() 'ここで取得、存在しないドメインユーザの場合NOTHINGが返ってくるので注意

    Dim userEntry = sr.GetDirectoryEntry()

    Debug.WriteLine(userEntry.Properties.Item("mail").Value)

    Debug.WriteLine(userEntry.Properties.Item("Title").Value)

    Debug.WriteLine(userEntry.Properties.Item("Department").Value)

    Debug.WriteLine(userEntry.Properties.Item("Company").Value)

    Debug.WriteLine(userEntry.Properties.Item("Fabrikam").Value)

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください