代码之家  ›  专栏  ›  技术社区  ›  Max Schmeling

给定一个用户的SID,如何获取他们的userPrincipalName?

  •  6
  • Max Schmeling  · 技术社区  · 14 年前

    我有一个用户的安全标识符列表,我需要得到一个userPrincipalName的列表。。。有没有什么方法可以在不加载users DirectoryEntry和拉入userPrincipalName属性的情况下获取它?

    2 回复  |  直到 14 年前
        1
  •  8
  •   marc_s    14 年前

    Managing Directory Security Principals in the .NET Framework 3.5 .

    它显示了.NET3.5的新增强的搜索功能 System.DirectoryServices.AccountManagement 命名空间。

    FindByIdentity 方法,它允许您根据标识(无论是用户主体名称、可分辨名称、GUID还是SID)查找用户(或组),它只起作用:

    UserPrincipal user = 
      UserPrincipal.FindByIdentity(principalContext,
                                   IdentityType.Sid, (value));
    

    您需要确保以正确的格式提供SID—有关详细信息,请参阅MSDN文档。

    if(user != null)
    { 
         string upn = user.UserPrincipalName;
    }
    

    本文的示例代码甚至还有两个附加的helper方法 FindByIdentityGuid FindByIdentitySid 实现你想要的目标!

        2
  •  -1
  •   adrianbanks    14 年前

    你可以用 LookupAccountSid() 方法调用Win32。我链接到的页面上有一些示例代码,显示了一个简单的示例。