【问题标题】:Display name in Active Directory is not being updated properlyActive Directory 中的显示名称未正确更新
【发布时间】:2020-04-12 14:13:48
【问题描述】:

当您在 Active Directory 中搜索名称时:

当你双击搜索的名字时你会看到属性“显示名”和你搜索的名字不一样:

我编写了这段代码来更新用户的“显示名称”:

if (aduser.DisplayName != null && aduser.DisplayName.Trim().Length > 0)
{
    existingUser.Rename("cn=" + aduser.DisplayName);                               
    existingUser.CommitChanges();
}

【问题讨论】:

    标签: c# .net active-directory rename


    【解决方案1】:

    如果您希望重命名 DirectoryEntry 对象本身,那么 Rename 方法就可以解决问题。但是,如果您需要更改帐户的显示名称,这将不起作用。

    如果你看一下 Rename 方法的定义,它会说,

    Changes the name of this System.DirectoryServices.DirectoryEntry object.
    

    并且它不会更改显示名称。以下 sn-p 将使用 PrincipalContext 和 UserPrincipal 更新 User 对象的 DisplayName。

        string userNameToUpdate = "userNameToLookup";
        string modifiedDisplayName = "cn=NewName in Display";
    
        PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
        UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.Name, userNameToUpdate);
        user.DisplayName = modifiedDisplayName;
        user.Save();
    

    如果您对使用 DirectoryEntry 感兴趣,则必须更新该 UserObject 的属性值。

        existingUser.Properties["displayname"].Value = "cn=YourNewValue";
        existingUser.CommitChanges();
    

    【讨论】:

    • 您可能不希望 cn=displayName 中。
    • 我将把它留给 OP 来设置他想要的任何东西,我提供的方法应该可以帮助任何人更新用户属性
    • @KUNALMEHTA 这有帮助吗?
    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多