C#管理员权限 - 检查

Hoo*_*och 36 .net c# privileges rights administrator

我知道有一些类似的问题.但我只想检查一件事.

我只想知道程序是否以管理员身份运行.我想检查一下,因为我想编辑一些安全文件.用户不必是管理员.我只想知道我的应用程序是否有权编辑一些在以管理员身份运行时可编辑的安全文件.

atr*_*joe 87

这将返回一个有效的bool

using System.Security.Principal;

bool isElevated;
using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
{
    WindowsPrincipal principal = new WindowsPrincipal(identity);
    isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
}
Run Code Online (Sandbox Code Playgroud)


Bry*_*end 6

这是@atrljoe的答案,使用最新的C#变成了一个衬里:

using System.Security.Principal;

static bool IsElevated => new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
Run Code Online (Sandbox Code Playgroud)

  • 这很丑。对不起。但实际上,您应该缩短一切。最好将其保留为4行,并使其发挥作用。如何调试您的一根衬管? (8认同)
  • 此表单的另一个缺点是[您永远不会按合同要求调用`Dispose`](https://blogs.msdn.microsoft.com/oldnewthing/20100809-00/?p=13203) (7认同)
  • 有趣的是...我发现它比扩展版本更易于阅读。这具有清晰的调用层次结构,而要理解分解为不同变量的代码,我需要在脑海中执行它。 (2认同)
  • 正如Ian所说,我的不赞成是因为它没有得到处理。 (2认同)