目标
我正在编写一个抽象各种 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);
}
}
}
提前致谢。