Active Directory 编程二三则

 
一、 查询是否存在指定的AD账号:

 

 using (DirectoryEntry de = new DirectoryEntry("LDAP://RootDSE"))
 
...{
          
string DCName = (string)de.Properties["defaultNamingContext"][0];

          
using (DirectoryEntry DC = new DirectoryEntry("LDAP://" + DCName))
          
...{
                   
using (DirectorySearcher deSearch = new DirectorySearcher( ))
                   
...{
                            deSearch.SearchRoot 
= DC;
                            deSearch.SearchScope 
= SearchScope.Subtree;
                            deSearch.Filter 
= "(&(&(objectCategory=person)(objectClass=user))(sAMAccountName=" + myAccountName+ "))";
                            
using (SearchResultCollection results = deSearch.FindAll( ))
                            
...{
                                
if (results.Count == 0)
                                
...{
                                    
return false;
                                }

                                
return true;
                            }

                     }

            }

}


 二、SearchScope.Base的使用

        当我们需要在一个多值的属性中查询时,就可以使用SearchScope.Base,例如,当我们要查询组myGroup中的Member中的所有组成员时,我们就可以使用SearchScope.Base 与 DirectorySearcher对象的AttributeScopeQuery属性来进行查询。

 

//这里的ADPath是要进行查询的group的AD中的路径,如 "LDAP://YourServerName/OU=Group,O=Microsoft,C=US                                        
            using (DirectoryEntry group = DirectoryEntry(ADPath, ADUser, ADPassword, AuthenticationTypes.Secure))
            
...{
                
string filter = "(objectClass=Group)";
                
string[ ] properties = new string[ ] ......"cn""displayname""distinguidshedName" };
                
using (DirectorySearcher search = new DirectorySearcher(group, filter, properties, SearchScope.Base))
                
...{
                    search.AttributeScopeQuery 
= "member";
                    
using (SearchResultCollection results = search.FindAll( ))
                    
...{

                        
for (int i = 0; i < results.Count; i++)
                        
...{
                            
using (DirectoryEntry de = results[i].GetDirectoryEntry( ))
                            
...{
                                
// add your process code....

                            }

                        }

                    }

                }

            }


 

阅读更多
个人分类: Active Directory
想对作者说点什么? 我来说一句

Active Directory 编程.pdf

2010年05月21日 350KB 下载

维护Active Directory

2010年06月22日 928KB 下载

active directory的安装图解

2011年07月03日 2.85MB 下载

没有更多推荐了,返回首页

不良信息举报

Active Directory 编程二三则

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭