Raj*_*enK 23 .net c# active-directory
我正在寻找一种方法来创建Active Directory用户并设置他们的密码,最好不要给我的应用程序/服务域管理员权限.
我尝试过以下方法:
DirectoryEntry newUser = _directoryEntry.Children.Add("CN=" + fullname, USER);
newUser.Properties["samAccountName"].Value = username;
newUser.Properties["userPassword"].Value = password;
newUser.Properties["mail"].Value = email;
newUser.CommitChanges();
Run Code Online (Sandbox Code Playgroud)
用户已创建,但似乎从未在用户上设置密码.
有没有人知道如何在创建用户时最初设置用户密码?我知道
.Invoke("SetPassword", new object[] { password })
Run Code Online (Sandbox Code Playgroud)
但这需要我的代码以域管理员权限运行.因为我没有真正看到授予我的代码域管理员权限的重点,只是设置初始密码(我也允许用户密码重置,但那些在特定用户的上下文中运行),我希望有人聪明解决方案,不要求我这样做.
提前致谢!
Nic*_*ver 35
现在使用System.DirectoryServices.AccountManagement可以更轻松地完成整个过程(只要你在.Net 3.5上):
以下是您具体案例的简要示例:
using(var pc = new PrincipalContext(ContextType.Domain))
{
using(var up = new UserPrincipal(pc))
{
up.SamAccountName = username;
up.EmailAddress = email;
up.SetPassword(password);
up.Enabled = true;
up.ExpirePasswordNow();
up.Save();
}
}
Run Code Online (Sandbox Code Playgroud)
是的,也可以使用下面的代码来创建批量用户
DirectoryEntry ouEntry = new DirectoryEntry("LDAP://OU=TestOU,DC=TestDomain,DC=local");
for (int i = 0; i < 10; i++)
{
try
{
DirectoryEntry childEntry = ouEntry.Children.Add("CN=TestUser" + i, "user");
childEntry.CommitChanges();
ouEntry.CommitChanges();
childEntry.Invoke("SetPassword", new object[] { "password" });
childEntry.CommitChanges();
}
catch (Exception ex)
{
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43409 次 |
| 最近记录: |