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....

                            }

                        }

                    }

                }

            }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值