C# 通过代码创建新用户时在AD中填充自定义属性

C# 通过代码创建新用户时在AD中填充自定义属性,c#,active-directory,C#,Active Directory,我对广告没有太多的经验,但通过在线查看,我发现了如何通过C编程创建用户。我还阅读了自定义属性,我希望做的是创建一个新的自定义属性,比如“myNewAttribute”,并将其作为用户创建的一部分进行填充 我曾经认为,如果我在广告中添加这个自定义属性,那么应该可以在每次创建帐户时填充它,但也许每次都需要创建它 假设不需要每次都创建它,到目前为止,我通过以下方式创建了用户: using(var pc = new PrincipalContext(ContextType.Domain, <SER

我对广告没有太多的经验,但通过在线查看,我发现了如何通过C编程创建用户。我还阅读了自定义属性,我希望做的是创建一个新的自定义属性,比如“myNewAttribute”,并将其作为用户创建的一部分进行填充

我曾经认为,如果我在广告中添加这个自定义属性,那么应该可以在每次创建帐户时填充它,但也许每次都需要创建它

假设不需要每次都创建它,到目前为止,我通过以下方式创建了用户:

using(var pc = new PrincipalContext(ContextType.Domain, <SERVER HERE>,username,password))
{
    using(var up = new UserPrincipal(pc)){
        up.UserPrincipalName = "whatever";
        up.Save();
    }
}
这可能吗?如果不可能,我如何在此处设置属性值?

UserPrincipal类仅公开某些属性。对于任何其他对象,您必须访问基础DirectoryEntry对象并直接修改它:

((DirectoryEntry) up.GetUnderlyingObject()).Properties["myNewAttribute"].Value = "new value here";

如果这是您经常做的事情,另一个选项是创建您自己的类,该类继承自UserPrincipal并将该属性作为属性公开。这里有一个GroupPrincipal的例子,但它同样适用于UserPrincipal:

您的自定义属性是否已经存在于AD中?你只需要用C来设置/更新这个值。会的,我计划在AD中创建它,添加到我相信会发生的模式中,并通过代码来设置它的值。是,正在更新/设置该值。您可以为此使用DirectoryEntry。请查收
((DirectoryEntry) up.GetUnderlyingObject()).Properties["myNewAttribute"].Value = "new value here";