解锁用户帐号

本文关键字:帐号 用户 解锁 | 更新日期: 2023-09-27 18:05:16

我正在尝试设置属性以解锁AD中的用户帐户,我正在使用以下代码;问题是de不包含userAccountControl,编码失败。

我可以通过使用DirectorySearcher获得userAccountControl的值,但这并不能帮助我使用de设置属性。有人能帮帮我吗?提前感谢

String m_Path = "LDAP://" + distinguishedName;
using (DirectoryEntry de = new DirectoryEntry(m_Path))
{
   if (de.Contains("userAccountControl")
   {
      int m_Val  = (int)de.Properties["userAccountControl"][0].Value;
      de.Properties["userAccountControl"].Value = m_Val | 0x0001
      de.CommitChanges;
   }
}

解锁用户帐号

我认为您需要检查de.Properties是否包含userAccountControl的值!

string ldapPath = "LDAP://" + distinguishedName;
using(DirectoryEntry de = new DirectoryEntry(ldapPath))
{
   // check to see if we have "userAccountControl" in the **properties** of de
   if(de.Properties.Contains("userAccountControl")
   {
      int m_Val  = (int)de.Properties["userAccountControl"][0].Value ;
      de.Properties["userAccountControl"].Value = m_Val | 0x0001;
      de.CommitChanges();
   }
}

另外,如果你使用的是。net 3.5及以上版本,你应该查看System.DirectoryServices.AccountManagement (S.DS.AM)命名空间。阅读这里的所有内容:

    管理。net Framework 3.5中的目录安全主体
  • System.DirectoryServices.AccountManagement上的MSDN文档

基本上,您可以在AD中定义域上下文并轻松查找和操作用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
   // unlock user
   user.UnlockAccount();
}

新的S.DS.AM使在AD中与用户和组进行交互变得非常容易!