使用c#创建新活动目录时无法设置密码

本文关键字:密码 设置 创建 新活动 活动 使用 | 更新日期: 2023-09-27 18:09:26

我正在用c#创建活动目录用户

这是我用来创建一个新用户的代码:
public bool CreateUser(string userName, string password)
        {
            try
            {
                DirectoryEntry entry = new DirectoryEntry(lDAPConnectionString, aDConnectionUserName, aDConnectionPassword, AuthenticationTypes.Secure);
                // Use the Add method to add a user to an organizational unit.
                DirectoryEntry user = entry.Children.Add("CN=" + userName, "user");
                // Set the samAccountName, then commit changes to the directory.
                user.Properties["samAccountName"].Value = userName;
                user.Properties["userPrincipalName"].Value = userName + Constants.ADProperties.ADUPNLogonSuffix;
                user.CommitChanges();
                // Set password never expire
                int NON_EXPIRE_FLAG = 0x10000;
                int val = (int)user.Properties["userAccountControl"].Value;
                user.Properties["userAccountControl"].Value = val | NON_EXPIRE_FLAG;
                user.CommitChanges();
                // Enable User
                val = (int)user.Properties["userAccountControl"].Value;
                user.Properties["userAccountControl"].Value = val & ~(int)Constants.ADS_USER_FLAG_ENUM.ADS_UF_ACCOUNTDISABLE;
                user.CommitChanges();
                user.RefreshCache();
                // Set password
                user.UsePropertyCache = true;
                user.Invoke("SetOption", new object[] { Constants.ADS_USER_FLAG_ENUM.ADS_OPTION_PASSWORD_PORTNUMBER, Constants.ADProperties.ADPort });
                user.Invoke("SetOption", new object[] { Constants.ADS_USER_FLAG_ENUM.ADS_OPTION_PASSWORD_METHOD, Constants.ADS_USER_FLAG_ENUM.ADS_PASSWORD_ENCODE_CLEAR });
                user.Properties["LockOutTime"].Value = 0; 
                user.Invoke("SetPassword", new object[] { password });
                user.CommitChanges();
                return true;
            }
            catch (Exception)
            { 
            }
            return false;
        }      

当我使用它时,它抛出一个异常:"服务器不愿意处理请求。(异常来自HRESULT: 0x80072035)"在行:"用户。调用("SetPassword",新对象[]{password});"

我试了很多方法,但都解决不了这个问题。任何帮助将不胜感激。由于

使用c#创建新活动目录时无法设置密码

由于密码策略,通常返回错误0x80072035。可以是长度、特殊字符、密码历史记录(以前使用过的密码)。向用户提供反馈将有助于处理这些错误。可以在这里找到处理这些错误的指南:

http://www.ozkary.com/2015/03/active-directory-setpassword-or.html