System.Security.WindowsPrincipal.IsInRole()方法的不稳定行为

时间:2010-08-10 08:10:07

标签: c#

System.Security.WindowsPrincipal.IsInRole()方法是否递归验证用户成员资格? 我尝试了以下内容并获得了不稳定的结果:

案例1: 创建一个安全组 - SGroup1 将 - NT Authority \ Authenticated Users添加到SGroup1。 注销然后登录 为登录用户调用IsInRole()。 API返回true。

案例2: 创建一个安全组 - SGroup1 添加 - 管理员到SGroup1。 注销并以管理员身份登录。 为登录用户调用IsInRole()。 API返回false。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您在运行什么操作系统?如果您在Windows Vista或Windows 7(或其Server 2008 / R2兄弟)上运行,则以下情况适用。正如Note WindowsPrincipal.IsInRole中{{1}} {{1}}所述{{1}}中提到的{{1}}(我强调):

  

在Windows Vista中,用户帐户控制   (UAC)确定a的权限   用户。如果您是该会员   你是内置的管理员组   分配了两个运行时访问令牌:a   标准用户访问令牌和   管理员访问令牌。 按   默认情况下,您是标准用户   角色。当您尝试执行某项操作时   需要管理的任务   特权,你可以动态   通过使用同意来提升您的角色   对话框。执行代码的代码   IsInRole方法不显示   同意对话框。 代码返回   如果您在标准用户中,则为false   角色,即使你在内置   管理员组。您可以提升   执行之前的权限   右键单击应用程序的代码   图标并指示您要   以管理员身份运行。