【发布时间】:2014-07-11 04:56:22
【问题描述】:
我有一个 C++ 程序的 EXE,它以一个 EXE 作为输入在其中搜索符号,并通过命令提示符将其替换为用户的某个值。
我正在使用 Eclipse IDE 和 MinGW 编译器进行开发。我还将链接器标志设置为“-static”。但是当我在其他机器上运行 EXE 时,我遇到了 UAC 弹出窗口的问题,它要求管理权限。
我也尝试了设置“以管理员身份运行此程序”的选项,但它也不起作用。
请帮帮我..提前谢谢。
【问题讨论】:
我有一个 C++ 程序的 EXE,它以一个 EXE 作为输入在其中搜索符号,并通过命令提示符将其替换为用户的某个值。
我正在使用 Eclipse IDE 和 MinGW 编译器进行开发。我还将链接器标志设置为“-static”。但是当我在其他机器上运行 EXE 时,我遇到了 UAC 弹出窗口的问题,它要求管理权限。
我也尝试了设置“以管理员身份运行此程序”的选项,但它也不起作用。
请帮帮我..提前谢谢。
【问题讨论】:
除了@David Heffernan 所写的内容外,您还可以在从 Program Files 等文件夹启动应用程序时触发 UAC 窗口,这需要管理权限。如果您尝试操作位于此类文件夹中的文件,这同样适用。维基百科关于触发窗口的事件有很好的部分:http://en.wikipedia.org/wiki/User_Account_Control#Tasks_that_trigger_a_UAC_prompt
【讨论】:
除非您已采取措施将 requireAdministrator 选项添加到您的 requestedExecutionLevel 应用程序清单设置,否则您不会期望收到 UAC 提示。但是,Windows 中存在向后兼容性选项,这将导致某些应用程序显示 UAC 提示。
这些向后兼容的 UAC 提示仅发生在不包含 requestedExecutionLevel 应用程序清单设置的可执行文件中。在那种情况下,系统使用启发式方法来确定是否显示 UAC 提示。例如,名为 setup.exe 或 patch.exe 的非清单应用程序将获得 UAC 提示。
避免这种向后兼容行为的方法是将应用程序清单链接到您的可执行文件。
这个问题更详细地介绍了这个主题:How does Windows decide whether to display the UAC prompt?
【讨论】: