gpt4 book ai didi

c# - 在 .NET (C#) 中创建 Active Directory 用户

转载 作者:IT王子 更新时间:2023-10-29 04:38:52 26 4
gpt4 key购买 nike

我需要在 Active Directory 中创建一个新用户。我发现了几个类似下面的例子:

using System;
using System.DirectoryServices;

namespace test {
class Program {
static void Main(string[] args) {
try {
string path = "LDAP://OU=x,DC=y,DC=com";
string username = "johndoe";

using (DirectoryEntry ou = new DirectoryEntry(path)) {
DirectoryEntry user = ou.Children.Add("CN=" + username, "user");

user.Properties["sAMAccountName"].Add(username);

ou.CommitChanges();
}
}
catch (Exception exc) {
Console.WriteLine(exc.Message);
}
}
}
}

当我运行这段代码时,没有出现任何错误,但没有创建新用户。

我正在运行测试的帐户有足够的权限在目标组织单位中创建用户。

我是否遗漏了什么(可能是用户对象的某些必需属性)?

代码不给出异常的任何想法?

编辑
以下对我有用:

int NORMAL_ACCOUNT = 0x200;
int PWD_NOTREQD = 0x20;
DirectoryEntry user = ou.Children.Add("CN=" + username, "user");
user.Properties["sAMAccountName"].Value = username;
user.Properties["userAccountControl"].Value = NORMAL_ACCOUNT | PWD_NOTREQD;
user.CommitChanges();

所以实际上有几个问题:

  1. CommitChanges 必须在 user 上调用(感谢 Rob)
  2. 密码策略阻止创建用户(感谢 Marc)

最佳答案

我认为您是在错误的 DirectoryEntry 上调用 CommitChanges。在 MSDN 文档 ( http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentries.add.aspx ) 中,它说明了以下内容(强调由我添加)

You must call the CommitChanges method on the new entry to make the creation permanent. When you call this method, you can then set mandatory property values on the new entry. The providers each have different requirements for properties that need to be set before a call to the CommitChanges method is made. If those requirements are not met, the provider might throw an exception. Check with your provider to determine which properties must be set before committing changes.

因此,如果您将代码更改为 user.CommitChanges() 它应该可以工作,如果您需要设置的属性不仅仅是帐户名称,那么您应该会得到一个异常(exception)。

由于您当前正在未更改的 OU 上调用 CommitChanges(),因此不会有任何异常。

关于c# - 在 .NET (C#) 中创建 Active Directory 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1298449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com