我期望这段代码:
WindowsPrincipal principal = new WindowsPrincipal( WindowsIdentity.GetCurrent() );
public bool UserHasAdminRights( WindowsPrincipal principal, WindowsBuiltInRole role )
{
bool isAdmin;
// get the role information of the current user
if ( principal.IsInRole( role ) )
{
isAdmin = true;
}
else
{
isAdmin = false;
}
return isAdmin;
}
当用户在内置管理员组中时 返回true 。
然而
IsInRole
各州的MSDN :
在 Windows Vista 中,用户帐户控制 (UAC) 确定用户的权限。如果您是 Built-in Administrators 组的成员,则会为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。默认情况下,您是标准用户角色。当您尝试执行需要管理权限的任务时,您可以使用“同意”对话框动态提升您的角色。执行 IsInRole 方法的代码不显示同意对话框。如果您是标准用户角色,即使您在内置管理员组中,代码也会返回 false。在执行代码之前,您可以通过右键单击应用程序图标并指示您要以管理员身份运行来提升您的权限。
问题是如何修改此代码以使其返回 true,如果用户在内置 Admin 组中,而不要求用户在运行时/之前提升权限?