当没有UAC弹出窗口时,无法检测用户是否使用提升的权限运行

use*_*541 6 .net c# uac

我正在开发一个C#应用程序,需要检测用户是否以提升的管理员身份运行.我尝试了史蒂文建议的解决方案.

我在5台机器上检查了解决方案,它在4台机器上工作正常.

即使我将用户帐户控制设置为,也有一台机器永远不会显示UAC通知消息Always notify me.

检查该机器上的代码时,即使我选择了run as administrator它,它也不起作用,并且该方法IsProcessElevated返回false.

那台特定的机器有问题吗?

有没有办法在这种平台上确定用户是否升级?

use*_*541 10

经过研究后,我发现从Windows 7开始,为了确定用户是否是高级管理员,您只需要检查以下内容:

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);
Run Code Online (Sandbox Code Playgroud)

(检查令牌的其余代码可用于此选项失败的情况)我测试了一些机器上的代码,它运行正常.

我的应用程序仅在win7及更高版本上运行,所以这个解决方案对我来说足够好了.