【发布时间】:2012-04-20 04:07:57
【问题描述】:
在我的 C# 应用程序中,我需要检查当前用户是否是管理员组的成员。它需要与 Windows XP 和 Windows 7 兼容。
目前,我正在使用以下代码:
bool IsAdministrator
{
get
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
}
问题在于,如果应用程序在 Windows 7 上以非提升管理员身份打开 UAC 运行,则此方法返回 false。即使应用程序以非提升的管理员身份运行,我如何确定用户是否是管理员?
【问题讨论】:
-
你为什么想知道?
-
嗯,首先,知道您是否是管理员可以让您知道您是否可以被提升。
-
@svick:如果用户是管理员组的成员,我需要显示某些 UI 元素。
-
我同意@svick - 你不应该这样做。你想要权限?尝试提升。不要假设用户将始终以未提升的管理员身份运行。作为标准用户运行并使用不同的管理员帐户进行升级是可接受的用法。顺其自然,无论用户如何工作,都让 UAC 机制完成其工作。