我创建了一个 C# 应用程序,它从数据库中创建了一系列 AD 帐户。我遇到的问题是,我收集的密码没有复杂性要求,因此当我将它们传递到我们的域中时,我收到一条错误消息,提示“服务器不愿意处理请求”。我跟踪了我的代码,它破解了密码,因为它对于我们的域来说不够复杂。然后,我为创建这些帐户的特定 OU 创建了一个 GPO,以禁用密码复杂性,为了安全起见,我添加了我的用户和我运行 C# 应用程序的计算机。
我仍然遇到此错误,它会更改我创建的帐户的密码。我是否遗漏了什么,或者有更好的方法可以解决这个问题?
我已经将用于创建和更改密码的代码包含在 C# 应用程序中。该代码是正确的,因为它适用于密码足够复杂的帐户。DC 是 Server 2012,但我认为这并不重要。
//Creates User
string cnUser = acctNumber + "_" + userName;
DirectoryEntry newUser = dirEntry.Children.Add("CN=" + cnUser, "user");
newUser.Properties["samAccountName"].Value = cnUser;
newUser.Properties["userPrincipalName"].Value = cnUser;
newUser.Properties["pwdLastSet"].Value = 0;
newUser.CommitChanges();
//Changes Password
String passwrd = userPassword.ToString();
newUser.Invoke("SetPassword", new object[] { passwrd });
newUser.CommitChanges();
//Sets User Account to Change Passowrd on new login
newUser.Properties["pwdLastSet"].Value = 0;
newUser.CommitChanges();
答案1
您只能通过 GPO 为整个域定义一个密码策略。
然后,您可以设置细粒度的密码策略,但请注意,您不会像对 GPO 那样将细粒度的密码策略应用于 OU。相反,您会将它们应用于用户和组。
http://technet.microsoft.com/en-us/library/cc770394(v=WS.10).aspx