如何使用objectGUID获取DirectoryEntry?

我知道,我们可以像这样得到一个DirectoryEntry:

string conPath = "LDAP://10.0.0.6/DC=wds,DC=gaga,DC=com"; string conUser = "administrator"; string conPwd = "Iampassword"; DirectoryEntry de = new DirectoryEntry(conPath, conUser, conPwd, AuthenticationTypes.Secure); 

我们可以像这样更改用户的密码:

 DirectorySearcher deSearch = new DirectorySearcher(); deSearch.SearchRoot = de; deSearch.Filter = String.Format("sAMAccountName={0}", "xumai"); SearchResultCollection results = deSearch.FindAll(); foreach (SearchResult objResult in results) { DirectoryEntry obj = objResult.GetDirectoryEntry(); obj.Invoke("setPassword", new object[] { "Welcome99" }); obj.CommitChanges(); } 

如果使用

 string x = obj.Guid.ToString();; 

我们可以得到用户的objectGUID“0b118130-2a6f-48d0-9b66-c12a0c71d892”

我怎么能改变它是密码基础这个objectGUID?

如何搜索用户群这个objectGUID表单“LDAP://10.0.0.6/DC=wds,DC=gaga,DC=com”?

有什么方法过滤它吗? etc strFilter =“(&(objectGUID = 0b118130-2a6f-48d0-9b66-c12a0c71d892))”;

希望对你有所帮助

谢谢。

在不更改代码的情况下,您可以通过多种方式绑定到Active-Directory 。 以下是另外两种方式:

第一个使用GUID绑定到对象 :

 string conPath = "LDAP://10.0.0.6/"; 

第二个使用SID绑定到对象 :

 string conPath = "LDAP://10.0.0.6/"; 

使用安全主体,您可以这样做:

 UserPrincipal user = UserPrincipal.FindByIdentity(adPrincipalContext, IdentityType.DistinguishedName,"CN=User1Acct,OU=TechWriters,DC=wds,DC=gaga,DC=com"); 

要么

 UserPrincipal user = UserPrincipal.FindByIdentity(adPrincipalContext, IdentityType.Guid,"0b118130-2a6f-48d0-9b66-c12a0c71d892"); 

如果.NET 3.5是一个选项,您应该开始使用System.DirectoryServices.AccountManagement 。 这是一个全新的世界。 以下是通过GUID查找用户的代码:

 using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "LDAP://10.0.0.6", "DC=wds,DC=gaga,DC=com", "administrator", "Iampassword")) { string theGuid = "0b118130-2a6f-48d0-9b66-c12a0c71d892"; UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.Guid, theGuid); } 

相同的模板很容易适应其他对象类型。