【发布时间】:2021-03-08 21:10:27
【问题描述】:
我有一个 Windows 应用程序,我使用以下命令检查是否以管理员身份运行:
public static bool IsAdministrator()
{
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
if (!IsAdministrator())
{
AlrtBox.Show("Run as Admin");
}
但是,如果我设置 .exe 文件的快捷方式并取消选中以管理员身份运行的复选框,无论选中还是未选中,它似乎仍然运行。 我想我正在检查用户是否是 windows 上的管理员(他们是),但如果复选框被选中则不是。
我想检查应用程序是否以 admin 身份运行,无论 Windows 上的用户如何。 我该怎么做?
【问题讨论】:
-
不确定你在问什么。在什么情况下您希望将“IsAdministrator”返回为真或假?管理员帐号?用户有管理员权限? RunAs 管理员帐户?
-
不管用户是谁,即使他们是管理员。我想确保应用程序(.exe)以管理员身份运行。即高级属性中的复选框被选中以管理员身份运行?
-
啊,好的。好吧,一种方法是尝试做一些只有管理员才能做的事情——比如尝试向注册表的 HKLM 部分写入一个无害的值?
-
也许最好只尝试管理操作和处理失败而不是(不正确地)检查是否可以执行它?
-
您的管理员测试对我来说很合适。如果您不想在清单中设置 requireAdministrator,您可以通过 shell 执行“runas”来重新启动您的进程 (stackoverflow.com/questions/2532769/…)。
标签: c#