68

可能重复:
检查当前用户是否为管理员

我需要测试应用程序(用 C# 编写,运行 Windows XP/Vista/7 操作系统)是否以管理员身份运行(如右键单击 .exe -> 以管理员身份运行,或在“属性”下的“兼容性”选项卡中以管理员身份运行) .

我已经用谷歌搜索并搜索了 StackOverflow,但我找不到有效的解决方案。

我最后一次尝试是这样的:

if ((new WindowsPrincipal(WindowsIdentity.GetCurrent()))
         .IsInRole(WindowsBuiltInRole.Administrator))
{
    ...
}
4

1 回答 1

153

试试这个

public static bool IsAdministrator()
{
    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

这在功能上看起来与您的代码相同,但以上内容对我有用......

在功能上做它,(没有不必要的临时变量)......

public static bool IsAdministrator()
{
   return (new WindowsPrincipal(WindowsIdentity.GetCurrent()))
             .IsInRole(WindowsBuiltInRole.Administrator);
}  

或者,使用表达式主体属性:

public static bool IsAdministrator =>
   new WindowsPrincipal(WindowsIdentity.GetCurrent())
       .IsInRole(WindowsBuiltInRole.Administrator);
于 2012-07-25T23:27:51.143 回答