如何确定应用程序为什么需要提升权限

4
当我启动我的可执行文件时,Windows提示需要提升权限,但实际上不应该这样做。
我该如何找出为什么Windows在启动时要求我提升可执行文件的权限呢?
注意:
- 没有清单资源(请求“asAdministrator”或其他) - 没有清单文件 - 兼容性选项卡(对所有用户和只有我)中未选中“以管理员身份运行”
我该如何确定我的应用程序为什么会提示要提升权限?

有没有需要管理员权限的文件I/O操作?(在Windows/Program Files文件夹中),注册表? - Ruel
2
你的代码尝试做什么都永远不会导致提权。 - Kate Gregory
1个回答

4
在没有清单的情况下,通常的原因是名称启发式(例如,您的文件名为setup.exe)和组策略(在“此程序可能未按预期运行”对话框后可能会意外设置)。
为了防止这种情况发生,只需应用具有asInvoker的清单(嵌入式或外部)。然后,您将不再担心这些启发式,并且不会提升权限。
我知道我在上面已经评论过了,但我需要重复一遍:您的代码尝试执行的操作永远不会导致提升权限。永远不会。除非您已提升权限,否则无法正常工作的内容将在未提升权限时失败。它不会提升您的权限。

最让人困惑的是,我创建了一个外部的 MyApp.exe.manifest 文件,声明为 asInvoker,但它仍然提示需要提升权限。但是,如果我重命名可执行文件,它就不再提示了。我仍然希望能够找到某个日志记录,解释为什么 Windows 认为该应用程序需要提升权限(可能是因为已经声明为 requireAdministrator,用户兼容性请求,所有用户兼容性请求,安装启发式检测或其他原因)。 - Ian Boyd
1
可能是兼容性请求,与名称相关联,因此更改名称会使请求无法正常工作。如果它们超过了清单数量,我也不会感到惊讶。您可以稍微尝试一下以建立“优先顺序” - 我没有在任何地方看到它的书面说明。 - Kate Gregory

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接