2

私の目的は、コンソール C# アプリケーション内で Active Directory (仮想マシン (Win SRV 2008R2) で実行される) に接続し、ドメイン内のすべてのユーザー名を書き留めることです。私はADの初心者なので、接続の設定に行き詰まりました。

今、最初のことが最初です。

ルート ドメイン名 = frt.local

IP : 192.168.xx

ユーザー名: 管理者

パス: yyyy

接続を設定するために以下のコードを書きましたが、エラーが発生しました。見落としていた点を教えてください。

DirectoryEntry entry = new DirectoryEntry();
entry.Path = "LDAP://192.168.x.x/dc=frt.local";
entry.Username = @"frt.local\admin";
entry.Password = "yyyy";

私が見逃したものを指摘した後、ユーザー名をコンソールに書き留めることについての助けは大歓迎です。

敬具

4

2 に答える 2

3
  var username = "your username";
  var password = "your password";
  var domain = "your domain";
  var ctx = new PrincipalContext(ContextType.Domain, domain, username, password);

  using (var searcher = new PrincipalSearcher(new UserPrincipal(ctx)))
  {
    foreach (var result in searcher.FindAll())
    {
      DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
      Console.WriteLine("First Name: " + de.Properties["givenName"].Value);
      Console.WriteLine("Last Name : " + de.Properties["sn"].Value);
      Console.WriteLine("SAM account name   : " + de.Properties["samAccountName"].Value);
      Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value);
      Console.WriteLine();
    }
  }
于 2012-10-17T21:23:32.883 に答える
3

Nesimの答えは良いです-最初は。しかし、それを使用する意味や必要性は本当にわかりません

DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;

行 - PrincipalSearcher の結果はすでに UserPrincpial であり、次のようにそのプロパティに簡単にアクセスできます。

using (var searcher = new PrincipalSearcher(new UserPrincipal(ctx)))
{
   foreach (var result in searcher.FindAll())
   {
       UserPrincipal foundUser = result as UserPrincipal;

       if(foundUser != null)
       {
           Console.WriteLine("First Name: {0}", foundUser.GivenName);
           Console.WriteLine("Last Name : {0}", foundUser.Surname);
           Console.WriteLine("SAM account name; {0}", foundUser.SamAccountName);
           Console.WriteLine("User principal name: {0}", foundUser.UserPrincipalName);         
           Console.WriteLine();
       }
   }
}

は、最もUserPrincipal頻繁に使用される属性をオブジェクト自体のプロパティとしてすでに非常に適切に公開していDirectoryEntryます。

于 2012-10-18T05:08:22.133 に答える