C#检查是否以管理员身份运行

时间:2012-07-25 23:25:18

标签: c# windows

  

可能重复:
  Check if the current user is administrator

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

我用Google搜索并搜索了StackOverflow,但我找不到可行的解决方案。

我的最后一次尝试是:

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

1 个答案:

答案 0 :(得分:110)

试试这个

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);