作成 2011.02.12
更新 2011.02.13
ASP.NET で Active Directory のオブジェクトを検索する
アセンブリ
コード別にアセンブリを追加しない場合は web.config に System.DirectoryServices を追加する必要があります。(今回は不要)
PublicKeyToken を確認するには C:\Windows\assembly を開きます。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.web>
    <compilation>
      <assemblies>
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </assemblies>
    </compilation>
  </system.web>
</configuration>
コード
DirectorySearcher クラスは必要な値がデフォルトで入ります。
<%@ PAGE LANGUAGE="C#" %>
<%@ Assembly Name="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
<%@ Import Namespace="System.DirectoryServices" %>
<html>
<head>
<title>AD get_domain</title>
<script runat="server">
void start_search(object sender, EventArgs e)
{
  String res = "";
  String s = txt_search.Text;
  if(s.Length == 0){ return; }
  try
  {
    using (DirectorySearcher ds = new DirectorySearcher(s))
    {
      ds.PageSize = 1000;
      SearchResultCollection srcol = ds.FindAll();
      for(int i=0; i<srcol.Count; i++)
      {
        res += srcol[i].Path+"<br>";
      }
    }
  }
  catch(ArgumentException ae)
  {
    res = ae.Message;
  }
  lbl_result.Text = res;
}
</script>
</head>
<body>
  <form runat="server">
  <asp:TextBox id="txt_search" Columns="50" Rows="1" Text="cn=Administrator" runat="server" />
  <asp:Button id="btn_search" Text="Search" OnClick="start_search" runat="server" /><br>
  <asp:Label id="lbl_result" Text="" runat="server" />
  </form>
</body>
</html>
実行結果
検索結果が複数ある場合は複数行表示されます。
LDAP://CN=Administrator,CN=Users,DC=test,DC=lan
参考

©2004-2017 UPKEN IPv4