c++ - 如果名称包含 "update",Windows 会强制文件进行 UAC 提升?

标签 c++ windows visual-studio-2010 uac elevated-privileges

我使用的是 Windows 7 和 Microsoft Visual Studio 2010。

我用 WinMain() 中的一个 MessageBox() 调用创建了一个简单的项目。项目名称是"update",所以EXE文件的名称是update.exe。我在链接器设置中关闭了 list 生成。但是当我尝试在 Visual Studio 中开始调试时,它说我的应用程序需要提升。

我决定通过在 Windows 资源管理器中单击它来启动应用程序,但它仍然需要管理员权限。我将其重命名为 update12345.exe12345update12345.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/

相关文章:

c++ - 如何在 C++11 中为包装函数参数解包元组?

c++ - ATmega8 不支持 JMP 指令

linux - Windows 主机与 Linux Docker 容器之间的通信

windows - Git:查找大包文件中的最大文件

c# - 去掉字符串末尾的所有元音

将在 Mac 上创建的 .c 文件转换为 Windows

c++ - `std::function` 和之前推导的模板参数的替换失败 - 为什么?

c++ - 指向使用 std::array 创建的数组

c - 如何在 C win32 控制台应用程序 EXE 文件中保存包含的库

c# - 将 View 转换为分部 View