Active Directory 编程二三则

原创 2007年09月15日 22:02:00

 
一、 查询是否存在指定的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(AD)域环境本地测试(外加部分内网渗透命令)

基本概念 活动目录(Active Directory):简单的说,活动目录是实现域环境的一个载体,要想实现一个大型的域环境组织和管理,通过AD可以轻松地实现。AD存储了有关网络对象(object...

Win 10 打印机active directory域服务当前不可用解决方法

明明电脑已经连接上了打印机,电视在Word中打印的时候还是显示“未安装打印机”,点击“添加打印机”的时候,会弹出一个对话框说“Active Directory域服务当前不可用”,真是很奇怪。检查了一下...
  • T3
  • T3
  • 2017年04月28日 09:58
  • 3270

建立Active Directory(活动目录)

  • 2013年12月20日 13:47
  • 1.23MB
  • 下载

为什么我们需要域?Active Directory系列之一

对很多刚开始钻研微软技术的朋友来说,域是一个让他们感到很头疼的对象。域的重要性毋庸置疑,微软的重量级服务产品基本上都需要域的支持,很多公司招聘工程师的要求中也都明确要求应聘者熟悉或精通Active D...

Active Directory Cookbook, 2nd Edition

  • 2016年02月17日 09:08
  • 1.97MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Active Directory 编程二三则
举报原因:
原因补充:

(最多只允许输入30个字)