Windows 如果文件名称包含 "update",是否强制文件进行 UAC 提升?
Windows force UAC elevation for files if their names contain "update"?
我正在使用 Windows 7 和 Microsoft Visual Studio 2010。
我在 WinMain()
中创建了一个 MessageBox()
调用的简单项目。项目名称为 "update"
,因此 EXE 文件的名称为 update.exe
。我在链接器设置中关闭了清单生成。但是当我尝试在 Visual Studio 中开始调试时,它说我的应用程序需要提升。
我决定通过在 Windows 资源管理器中单击它来启动应用程序,但它仍然需要管理员权限。我将其重命名为 update12345.exe
和 12345update12345.exe
,但它仍然需要提升。
但是当我将它重命名为 12345.exe
时,它在不请求管理员权限的情况下工作得很好!我认为 Windows 需要提升名称包含 "update"
子字符串的所有文件。因此,我获取了另一个文件(debugview.exe
来自 SysInternals DebugView)并将其重命名为 update.exe
- 但它在没有提升的情况下工作。
造成这种奇怪行为的原因是什么?
如果您的应用程序未在其清单中包含 requestedExecutionLevel,安装程序检测技术会检查其名称是否包含 "update"、"install" 等,以检测是否是安装程序应用程序。
这是因为您的应用在重命名为“update”时需要 UAC,而其他没有清单的应用则不需要。
我正在使用 Windows 7 和 Microsoft Visual Studio 2010。
我在 WinMain()
中创建了一个 MessageBox()
调用的简单项目。项目名称为 "update"
,因此 EXE 文件的名称为 update.exe
。我在链接器设置中关闭了清单生成。但是当我尝试在 Visual Studio 中开始调试时,它说我的应用程序需要提升。
我决定通过在 Windows 资源管理器中单击它来启动应用程序,但它仍然需要管理员权限。我将其重命名为 update12345.exe
和 12345update12345.exe
,但它仍然需要提升。
但是当我将它重命名为 12345.exe
时,它在不请求管理员权限的情况下工作得很好!我认为 Windows 需要提升名称包含 "update"
子字符串的所有文件。因此,我获取了另一个文件(debugview.exe
来自 SysInternals DebugView)并将其重命名为 update.exe
- 但它在没有提升的情况下工作。
造成这种奇怪行为的原因是什么?
如果您的应用程序未在其清单中包含 requestedExecutionLevel,安装程序检测技术会检查其名称是否包含 "update"、"install" 等,以检测是否是安装程序应用程序。 这是因为您的应用在重命名为“update”时需要 UAC,而其他没有清单的应用则不需要。