Я знаю, мы можем получить 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();;
мы можем получить пользовательский объектGUID "0b118130-2a6f-48d0-9b66-c12a0c71d892"
как я могу изменить это база паролей этого объектаGUID?
как искать в базе данных этот объектGUID-форму "LDAP://10.0.0.6/DC=wds,DC=gaga,DC=com"?
Есть ли способ фильтровать его? и т.д. strFilter = "(& (objectGUID = 0b118130-2a6f-48d0-9b66-c12a0c71d892))";
надеюсь на вашу помощь
спасибо.
Без изменения кода у вас есть несколько способов привязки к Active Directory. Вот еще два способа:
Первый использует GUID для привязки к объекту:
string conPath = "LDAP://10.0.0.6/<GUID=0b118130-2a6f-48d0-9b66-c12a0c71d892>";
Второй использует SID для привязки к объекту:
string conPath = "LDAP://10.0.0.6/<SID=S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXX-XXX>";
Используя Принципы безопасности, вы можете сделать это следующим образом:
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);
}
Тот же шаблон легко адаптируется к другим типам объектов.