我有一个应用程序,Windows 2008 将始终以“管理员身份”运行(即蓝色/黄色盾牌覆盖图标始终可见)。
但是,“以管理员身份运行该程序”标志是不是在文件属性中设置。
这个隐式标志从何而来,我该如何摆脱它?
背景:我不想以管理员身份运行此程序,它应该在计划任务中使用非特权帐户运行。但目前 UAC 不允许运行此程序。
答案1
您可能正在触发 Windows 的几种启发式方法之一来确定应用程序是否需要管理权限。如果它确定应用程序需要管理权限,它将触发 UAC 提示。它并不完美,也不总是正确的,但这一切都是为了向后兼容。
最常见的方法之一就是通过文件名。如果文件包含安装或者设置(可能还有更新),则除非通过嵌入的清单文件明确告知不要这样做,否则它将提示。您无法更改这一点,开发人员必须进行此更改。
它可能正在写入特权位置,例如某个关闭位置C:/Windows
或C:/Program Files
甚至是特权注册表位置(特别是某个关闭位置HKEY_LOCAL_MACHINE
)。标准用户无法写入(在某些情况下甚至无法访问)这些位置,因此 Windows 必须触发 UAC 提示才能使应用程序正常运行。
您可以检查此应用程序的发布者是否有任何可用的更新。他们可能会为您提供与 Windows Server 2008 兼容的更新。如果没有,也许可以尝试联系他们并询问他们是否知道任何问题并看看他们是否有解决方案。
此程序也可能被列在内置兼容性数据库中,因为需要提升才能正常运行。我不确定您是否可以影响此列表,但您最好使用软件发布商提供的较新版本,他们已确认与 Windows Server 2008 兼容。
可能只是应用程序比较旧,奇怪的事情触发其中一种启发式方法。我编写的一个应用程序在 Windows XP 上运行良好,但在 Vista 及更高版本上触发了 UAC 提示。它没有读取或写入任何我之前提到的特权位置。不更改任何代码,只需在 Visual Studio 2010(而不是最初编译时使用的 Visual Studio 2005)中重新编译即可解决该问题。