我想使用.NET 3.5中引入的AccountManagement
命名空間來查找用戶並設置其密碼。但是,ADLDS服務器不屬於我們公司的域名,所以我使用ContextType.Machine
。當我搜索用戶時,它從來沒有找到(我懷疑它是在錯誤的容器中搜索,但根據使用ContextType.Machine
時的文檔,您無法指定容器)。如何在遠程LDAP服務器上的特定OU中搜索用戶?
using (var context = new PrincipalContext(ContextType.Machine, "test-server", null, "username", "password")) {
using (var u = UserPrincipal.FindByIdentity(context, "SuperAdmin")) {
//u is always null. :(
}
}
但是,我知道我可以使用純醇」 DirectoryEntry
找到用戶:
using (var de = new DirectoryEntry("LDAP://test-server:389/CN=SuperAdmin,CN=SuperUsers,OU=test-server,DC=foo,DC=bar,DC=com", "username", "password", AuthenticationTypes.Secure)) {
//The user is found, but SetPassword fails with "The directory property cannot be found in the cache"
de.Invoke("SetPassword", new object[] { "foobar" });
}
最後一件事要指出的是,我可以使用ADSI編輯更改與這些相同的憑據密碼。是否可以使用較新的目錄對象執行此搜索?