检测是否以管理员身份运行,是否具有提升权限?我有一个应用程序需要检测它是否以提升的权限运行。我目前的代码设置如下:static bool IsAdministrator(){
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);}这可用于检测用户是否是管理员,但如果以没有提升的管理员身份运行则无法工作。(例如在vshost.exe中)。如何判断高程是否[已经生效或]可能?
3 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
(提出问题六年后的新答案)
免责声明:这只是在我的特定操作系统上使用我的特定用户的特定设置时发生的事情:
using System.Security.Principal;// ... static bool IsElevated { get { return WindowsIdentity.GetCurrent().Owner .IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid); } }
因此,当我运行“以管理员身份运行”时,属性get
访问器将返回true
。正常运行时(即使我的用户“是”管理员,只是没有“以管理员身份”运行此特定应用程序),它将返回false
。
这似乎比许多其他答案简单得多。
我不知道是否存在失败的情况。
PS!这也似乎没问题:
static bool IsElevated { get { var id = WindowsIdentity.GetCurrent(); return id.Owner != id.User; } }
- 3 回答
- 0 关注
- 825 浏览
添加回答
举报
0/150
提交
取消