System.Security.WindowsPrincipal.IsInRole()方法是否递归验证用户成员资格? 我尝试了以下内容并获得了不稳定的结果:
案例1: 创建一个安全组 - SGroup1 将 - NT Authority \ Authenticated Users添加到SGroup1。 注销然后登录 为登录用户调用IsInRole()。 API返回true。
案例2: 创建一个安全组 - SGroup1 添加 - 管理员到SGroup1。 注销并以管理员身份登录。 为登录用户调用IsInRole()。 API返回false。
我错过了什么?
答案 0 :(得分:1)
您在运行什么操作系统?如果您在Windows Vista或Windows 7(或其Server 2008 / R2兄弟)上运行,则以下情况适用。正如Note
WindowsPrincipal.IsInRole
中{{1}} {{1}}所述{{1}}中提到的{{1}}(我强调):
在Windows Vista中,用户帐户控制 (UAC)确定a的权限 用户。如果您是该会员 你是内置的管理员组 分配了两个运行时访问令牌:a 标准用户访问令牌和 管理员访问令牌。 按 默认情况下,您是标准用户 角色。当您尝试执行某项操作时 需要管理的任务 特权,你可以动态 通过使用同意来提升您的角色 对话框。执行代码的代码 IsInRole方法不显示 同意对话框。 代码返回 如果您在标准用户中,则为false 角色,即使你在内置 管理员组。您可以提升 执行之前的权限 右键单击应用程序的代码 图标并指示您要 以管理员身份运行。