以前收藏了徐虎专栏里的一篇AD操作的类,后来的AD操作省了不少的时间。但今天发现类中的一个小错误。就是新建用户后,启用帐户时代码不正确。
原代码:
///
/// 启用指定 的用户
///
///
public static void EnableUser(DirectoryEntry de)
{
impersonate.BeginImpersonate();
de.Properties["userAccountControl"][0] = ADClass.ADS_USER_FLAG_ENUM.ADS_UF_NORMAL_ACCOUNT | ADClass.ADS_USER_FLAG_ENUM.ADS_UF_DONT_EXPIRE_PASSWD;
de.CommitChanges();
impersonate.StopImpersonate();
de.Close();
}
上面的ADClass.ADS_USER_FLAG_ENUM.ADS_UF_NORMAL_ACCOUNT = 0X0200; //普通用户的默认帐号类型
ADClass.ADS_USER_FLAG_ENUM.ADS_UF_DONT_EXPIRE_PASSWD = 0X10000; //密码永不过期标志
上述代码运行时竟让报“该服务器不愿意处理该请求”?狂晕!!!第一次遇见这种异常消息!!
后来在微软网站找到了原因所在:Enabling and Disabling the User Account
启用帐号:
DirectoryEntry usr = new DirectoryEntry("LDAP://CN=New User,CN=users,DC=fabrikam,DC=com"); int val = (int) usr.Properties["userAccountControl"].Value; usr.Properties["userAccountControl"].Value = val & ~ADS_UF_ACCOUNTDISABLE; usr.CommitChanges();
上班时间就不多废话了,userAccountControl的其他属性操作请查阅ADS_USER_FLAG_ENUM