我正在开发一个需要检测用户是否以提升的管理员身份运行的 C# 应用程序。我尝试了史蒂文建议的解决方案。
我检查了 5 台机器上的解决方案,其中 4 台运行良好。
有一台机器从不显示 UAC 通知消息,即使我将用户帐户控制设置为Always notify me.
检查那台机器上的代码时,即使我选择run as administrator,它也不起作用,并且该方法IsProcessElevated返回 false。
那台特定的机器有问题吗?
在那种平台上,有没有办法确定用户是否被提升?
经过研究,我发现从 Windows 7 开始,为了确定用户是否是高级管理员,您只需要检查以下内容:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);
(如果此选项失败,可以使用检查令牌的其余代码)我在一些机器上测试了代码,它工作正常。
我的应用程序只在 win7 及更高版本上运行,所以这个解决方案对我来说已经足够好了。