4

目标

我正在编写一个抽象各种 Windows 用户机制的类。我的班级知道用户的帐户名和域(如果有的话)。我试图水合一个属性,该属性指示用户是否对其所属的域或本地环境具有管理权限。

问题

该类WindowsPrincipal通过 提供该信息IsInRole,但它的构造函数需要一个WindowsIdentity,如果没有用户主体名称 (UPN),我无法找到建立该信息的方法。该UserPrincipal.UserPrincipalName属性对域用户可用,但对本地用户为空。还有另一种方法可以WindowsPrincipal从 a中获取 aUserPrincipal吗?或者,没有它还有其他方法可以实现目标吗?

来源

using (PrincipalContext principalContext = new PrincipalContext(PrincipalContextType, principalContextName))
{
    using (UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.Name, Name))
    {
        // Capture additional information from the user principal.
        Certificates = userPrincipal.Certificates;
        DisplayName = userPrincipal.DisplayName;
        UserPrincipalName = userPrincipal.UserPrincipalName;

        // This constructor blows up because UserPrincipalName is null for local users.
        using (WindowsIdentity windowsIdentity = new WindowsIdentity(UserPrincipalName))
        {
            // Capture group membership information about the specified user.
            WindowsPrincipal windowsPrincipal = new WindowsPrincipal(windowsIdentity);

            // Determine if the user has administrative privilege on the domain or local machine.
            HasAdministrativePrivilege = windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
        }
    }
}

提前致谢。

4

0 回答 0