有没有一种方法可以使用NSIS在Win10中安装可以读取C:\ Windows的应用程序?

时间:2020-05-05 16:15:04

标签: windows-10 nsis elevated-privileges compatibility-mode

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

为此,我假设我们需要让NSIS设置兼容模式或设置提升的用户特权。但是我愿意接受其他选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

在Windows 7和最近25年发布的所有其他Windows版本中,这也是错误的。

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

您最好的选择是修改您的应用程序,以使其requests UAC elevation在其manifest中。如果应用程序尚未具有嵌入式清单(不请求ComCtl32 v6等),则理论上可以使用external .manifest file

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

!include x64.nsh

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

Application compatibility layers are there for the customer, not for the program,但我想我们已经无法遵循Microsoft准则了。

相关问题