我使用的是 Windows 7 和 Microsoft Visual Studio 2010。
我用 WinMain()
中的一个 MessageBox()
调用创建了一个简单的项目。项目名称是"update"
,所以EXE文件的名称是update.exe
。我在链接器设置中关闭了 list 生成。但是当我尝试在 Visual Studio 中开始调试时,它说我的应用程序需要提升。
我决定通过在 Windows 资源管理器中单击它来启动应用程序,但它仍然需要管理员权限。我将其重命名为 update12345.exe
和 12345update12345.exe
,但它仍然需要提升。
但是当我将它重命名为 12345.exe
时,它可以完美运行而无需请求管理员权限!我认为 Windows 需要提升名称包含 "update"
子字符串的所有文件。因此,我获取了另一个文件(来自 SysInternals DebugView 的 debugview.exe
)并将其重命名为 update.exe
- 但它在没有提升的情况下工作。
这种奇怪行为的原因可能是什么?
最佳答案
如果您的应用程序未在其 list 中包含 requestedExecutionLevel,安装程序检测技术会检查其名称是否包含“更新”、“安装”等,以检测是否是安装程序应用程序。 这是因为您的应用在重命名为“更新”时需要 UAC,而其他没有 list 的应用则不需要。
关于c++ - 如果名称包含 "update",Windows 会强制文件进行 UAC 提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140051/