我有一組測試帳戶即將創建,但帳戶將設置爲在第一次登錄時要求更改密碼。我想用C#編寫一個程序來檢查測試帳戶並更改密碼。如何以編程方式更改Active Directory密碼
32
A
回答
57
可以使用UserPrincipal類的SetPassword方法,只要你有足夠的權限,一旦你找到正確的UserPrincipal對象。使用FindByIdentity來查找所討論的主要對象。
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName))
{
user.SetPassword("newpassword");
// or
user.ChangePassword("oldPassword", "newpassword");
}
}
18
這裏有一個很好的Active Directory編程快速參考:
Howto: (Almost) Everything In Active Directory via C#
見接近尾聲密碼重設。
public void ResetPassword(string userDn, string password)
{
DirectoryEntry uEntry = new DirectoryEntry(userDn);
uEntry.Invoke("SetPassword", new object[] { password });
uEntry.Properties["LockOutTime"].Value = 0; //unlock account
uEntry.Close();
}
1
這裏是解決方案:
string newPassword = Membership.GeneratePassword(12, 4);
string quotePwd = String.Format(@"""{0}""", newPassword);
byte[] pwdBin = System.Text.Encoding.Unicode.GetBytes(quotePwd);
UserEntry.Properties["unicodePwd"].Value = pwdBin;
UserEntry.CommitChanges();
+0
在我的情況下,我收到消息:「服務器不願意處理請求」。 – Samuel 2013-01-17 21:44:11
11
試試這個代碼。它適用於我,
public void ChangeMyPassword(string domainName, string userName, string currentPassword, string newPassword)
{
try
{
string ldapPath = "LDAP://192.168.1.xx";
DirectoryEntry directionEntry = new DirectoryEntry(ldapPath, domainName + "\\" + userName, currentPassword);
if (directionEntry != null)
{
DirectorySearcher search = new DirectorySearcher(directionEntry);
search.Filter = "(SAMAccountName=" + userName + ")";
SearchResult result = search.FindOne();
if (result != null)
{
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (userEntry != null)
{
userEntry.Invoke("ChangePassword", new object[] { currentPassword, newPassword });
userEntry.CommitChanges();
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
0
可以使用.NET Framework 2.0爲域帳戶設置新密碼。 見波紋管工作代碼:
string domainfqdn="mydomain.test.gov" //fqdn of the domain
string ldapPath =GetObjectDistinguishedName (objectClass.user,returnType.distinguishedName, args[0].ToString(),domainfqdn);
ldapPath="LDAP://" + domainfqdn + :389/"+ldapPath;
DirectoryEntry uEntry = new DirectoryEntry(ldapPath,null,null,AuthenticationTypes.Secure);
uEntry.CommitChanges();
Console.WriteLine(ldapPath);
string password="myS3cr3tPass"
uEntry.Invoke("SetPassword", new object[] { password });
uEntry.Properties["LockOutTime"].Value = 0; //unlock account
uEntry.CommitChanges();
uEntry.Close();
是非常importan檢查在uEntry參數,代碼將當前線程的安全上下文中運行,除非空值被指定
0
public void ResetPassword(string userName, string Password, string newPassword)
{
try
{
DirectoryEntry directoryEntry = new DirectoryEntry(Path, userName, Password);
if (directoryEntry != null)
{
DirectorySearcher searchEntry = new DirectorySearcher(directoryEntry);
searchEntry.Filter = "(samaccountname=" + userName + ")";
SearchResult result = searchEntry.FindOne();
if (result != null)
{
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (userEntry != null)
{
userEntry.Invoke("SetPassword", new object[] { newPassword });
userEntry.Properties["lockouttime"].Value = 0;
}
}
}
}
catch (Exception ex)
{
Log.Error("Password Can't Change:" + ex.InnerException.Message);
}
}
相關問題
- 1. 如何以編程方式設置Active Directory密碼時需要更改密碼?
- 2. 更改Active Directory密碼
- 3. 如何以編程方式刪除或重命名Azure Active Directory?
- 4. 如何以編程方式在Active Directory中搜索打印機
- 5. 如何以編程方式讀取Active Directory架構
- 6. 如何以編程方式將此Active Directory作爲LocalService訪問?
- 7. 如何以編程方式更改Gmail的密碼?
- 8. 如何以編程方式更改RDP登錄名/密碼?
- 9. 如何以編程方式更改Ambari管理員密碼
- 10. 以編程方式更改java密鑰庫的密碼
- 11. 通過ldapmodify修改Active Directory密碼
- 12. 使用ldap更新Active Directory密碼python
- 13. 以編程方式生成滿足Active Directory密碼策略複雜性要求的隨機密碼
- 14. Active Directory如何標記密碼過期?
- 15. 如何以編程方式檢查Active Directory LDS(ADAM)中的用戶密碼何時過期?
- 16. Active Directory密碼重置
- 17. Active Directory密碼策略
- 18. Active Directory如何存儲密碼?所以我可以模仿
- 19. 如何以編程方式訪問Active Directory中的「最大密碼年齡」屬性?
- 20. 以編程方式更改VB.NET代碼
- 21. 以編程方式更改PIN碼
- 22. 以編程方式登錄到Azure Active Directory
- 23. 以編程方式鎖定Active Directory帳戶
- 24. 強制以編程方式複製單個Active Directory對象
- 25. 以編程方式更改Mac Keychain密碼?
- 26. Oracle數據庫以編程方式更改用戶密碼
- 27. 如何以編程方式更改card_view:cardCornerRadius
- 28. 如何以編程方式更改android:configChanges?
- 29. 如何以編程方式更改UIView?
- 30. WSO2 Identity Server - Active Directory集成 - 更改密碼問題
這是僅在.NET 3.5及更高版本,BTW(PrincipalContext和全部)中可用。 – 2009-07-04 19:59:12
之後記得`user.Save()`。 – 2016-07-28 13:50:11