C#でUserPrincipal情報の取得について備忘録、例によってLINQPadでの実行コード。System.DirectoryServices.AccountManagement の参照設定とNamespaceの設定が必要です。
void Main() { // 対象はLocalMachine using (var context = new PrincipalContext(ContextType.Machine)) { // こんな方法や using (var searcher = new PrincipalSearcher(new UserPrincipal(context))) { searcher.QueryFilter.SamAccountName = "Guest"; searcher.FindOne().Dump(); } // こんな方法で検索できます var up = UserPrincipal.FindByIdentity(context, "Guest"); up.Dump(); } }
ちなみにDumpメソッドはLINQPadの拡張で、オブジェクトの中身をダンプしてくれる便利なメソッドです。
Domainの場合や、全部だす場合はこんな感じ。
void Main() { // ドメインの場合 using (var context = new PrincipalContext(ContextType.Domain, "hoge.local")) { // 全部出す using (var searcher = new PrincipalSearcher(new UserPrincipal(context))) { foreach (var result in searcher.FindAll()) { result.Dump() } } } }