代码改变世界

[很简单]获得ActiveDirectory中所有用户的详细信息

2005-11-16 18:46  Ben  阅读(824)  评论(0编辑  收藏  举报

很简单的代码,列出AD中所有Person的详细信息(根据获得所有属性,你可以为你的应用程序添加“从域中导入用户资料”的功能,当然,也可以将你的应用程序和域进行集成)。



下载示例代码:/Files/BenSoft/ADTest.rar

为您的工程添加 System.DirectoryServices 引用;
获得Person信息的代码片断如下:

        private void btnGet_Click(object sender, System.EventArgs e)
        
{
            
if(this.txtDomain.Text.Trim().Length > 0 )
            
{
                
try
                
{
                    DirectoryEntry de 
= new  DirectoryEntry("LDAP://" + this.txtDomain.Text);
                    
//DirectoryEntry de = new DirectoryEntry("LDAP://" + this.txtDomain.Text,this.txtAdminID.Text,this.txtPwd.Text) ;

                    
//查询
                    DirectorySearcher src = new DirectorySearcher("(&(objectCategory=person)(objectClass=user))"); 
                    
//根节点
                    src.SearchRoot = de; 
                    
//搜索范围包含所有子对象
                    src.SearchScope = System.DirectoryServices.SearchScope.Subtree; 
                    StringBuilder strTemp 
= new StringBuilder() ;
                    
//遍历所有搜索到的节点
                    foreach(SearchResult res in src.FindAll()) 
                    
{
                        strTemp.Append(
"\r\n======================\r\n");
                        
//显示所有属性名和属性值
                        foreachstring myKey in res.Properties.PropertyNames)
                        
{
                            
foreach( Object obj in res.Properties[myKey])
                            
{
                                strTemp.Append(myKey 
+ " : " + obj.ToString() + "\r\n" );
                            }

                        }

                    }
 
                    
this.rtxtUser.Text = strTemp.ToString() ;
                }

                
catch(Exception err)
                
{
                    
throw(err);
                }

            }

            
else
            
{
                MessageBox.Show(
"Please enter the domain name !");
            }

        }

很简的例子,了解更多AD以及.Net操作AD的信息可以查阅MSDN,liuhuimiao同志的几篇文档很不错的http://blog.joycode.com/liuhuimiao/category/934.aspx

另外,如果您在运行代码访问AD时候出现“服务器不可操作”的异常,您不妨将你IP设置为静态IP(不要DHCP自动获得)。

对于AD我也知之甚浅,欢迎大家一起交流学习。