6

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

我检查了 5 台机器上的解决方案,其中 4 台运行良好。

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

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

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

在那种平台上,有没有办法确定用户是否被提升?

4

2 回答 2

10

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

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);

(如果此选项失败,可以使用检查令牌的其余代码)我在一些机器上测试了代码,它工作正常。

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

于 2012-08-30T15:32:05.033 回答
0

问起来可能很傻,但是在您将UAC更改为始终通知我之后,您是否重新启动了机器?

我遇到了同样的问题,问题出在 Windows 本身,因为除非您重新启动机器,否则 UAC 状态不会改变。

试一试,并检查这个链接这个

于 2012-08-30T14:13:38.790 回答