首页 > 解决方案 > 有没有办法使用 NSIS 在 Win10 中安装一个可以读取 C:\Windows 的应用程序?

问题描述

我们有一个拥有大量安装基础的应用程序。长话短说,在有限的时间内,一些新的 Win10 系统需要像 Win7 系统一样存储它们的数据——在 C:\windows 中(这是不可协商的,并且是临时的——我知道这是一种糟糕的形式,但它是临时解决方法)。

为了做到这一点,我假设我们需要让 NSIS 设置兼容模式,或者设置提升的用户权限。但我对其他选择持开放态度。

谢谢!

标签: windows-10nsiselevated-privilegescompatibility-mode

解决方案


Windows 7 和过去 25 年发布的所有其他 Windows 版本也是错误的。

虽然可以为所有用户授予对 %windir% 的写入权限,但这是一个巨大的安全问题,我不建议这样做。

您最好的选择是修改您的应用程序,以便它在其清单中请求 UAC 提升。如果应用程序还没有嵌入式清单(不请求 ComCtl32 v6 等),那么理论上您可以使用外部 .manifest 文件

一个不太理想的解决方案是设置兼容性标志:

!include x64.nsh

${If} ${IsWow64}
SetRegView 64
${EndIf} 
WriteRegStr HKLM "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$InstDir\MyApp.exe" "RUNASADMIN" 
SetRegView Default

应用程序兼容性层是为客户提供的,而不是为程序提供的,但我想我们已经不再遵循微软的指导方针了。


推荐阅读