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