我有一个简单的问题。
实际上我在Windows环境版本10.0.16299.0和UWP中工作。我想要做的是获取有关用户帐户信息,其名称以及管理员或用户的信息,简短的代码如下所示:
public class Priciple
{
public string UserName { get; set; }
public string AccountDomainSid { get; set; }
public List<string> Claims { get; set; }
public string AdminRole { get; set; }
public string UserRole { get; set; }
public void GetUserInfo()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
UserName = identity.Name;
AccountDomainSid = identity.User?.AccountDomainSid.Value ?? "Unknown";
Claims = identity.Claims.Select(claim => claim.Value).ToList();
AdminRole = $"Admin role {principal.IsInRole(@"BUILTIN\Administrators")}";
UserRole = $"User role {principal.IsInRole(@"BUILTIN\Users")}";
}
}
现在,我正在获取SID和用户名以及其他内容的列表,所以简单的类显示如下:
用户名 - DESKTOP-ISLHFK5 \管理员域名Sid - S-1-5-21-134928182-1594639943-345264679 本地帐户组Sid: 桌面ISLHFK5 \管理员 S-1-5-21-134928182-1594639943-345264679-500 - 据我所知这是管理员帐号 S-1-5-21-134928182-1594639943-345264679-513 S-1-5-21-134928182-1594639943-345264679-513 S-1-1-0 S-1-5-114 S-1-5-21-134928182-1594639943-345264679-1002 S-1-5-21-134928182-1594639943-345264679-1051 S-1-5-32-544 S-1-5-32-562 S-1-5-32-559 S-1-5-32-545 S-1-5-14 S-1-5-4 S-1-5-11 S-1-5-15 S-1-5-113 S-1-2-0 S-1-5-64-10
但是当我检查管理员时,我得到了:
权限信息管理员角色错误
现在任何想法都是为了??
答案 0 :(得分:1)
您是否尝试使用WindowsBuiltInRole.Administrator
;
var AdminRole = $"Admin role {principal.IsInRole(WindowsBuiltInRole.Administrator)}";
答案 1 :(得分:1)
WindowsBuiltInRole的文档中解释了这一点:
在Windows Vista中,用户帐户控制(UAC)确定用户的权限。如果您是内置管理员组的成员,则会为您分配两个运行时访问令牌:标准用户访问令牌和管理员访问令牌。
默认情况下,您处于标准用户角色。当你尝试 执行需要管理权限的任务,您可以 使用“同意”对话框动态提升角色。该 执行IsInRole方法的代码不显示同意 对话框。如果您在标准用户中,则代码返回false 角色,即使您在内置管理员组中。
通过右键单击,可以在执行代码之前提升权限 应用程序图标,表示您要以 管理员。
再次使用myPrincipal.IsInRole(WindowsBuiltInRole.Administrator)
检查该帐户是否为管理员