我们有一个具有庞大安装基础的应用程序。长话短说,在有限的时间内,一些新的Win10系统需要像Win7系统一样存储数据-在C:\ windows中(这是不可协商的,而且是暂时的-我知道这是不好的形式,但是一个临时的解决方法)。
为此,我假设我们需要让NSIS设置兼容模式或设置提升的用户特权。但是我愿意接受其他选择。
谢谢!
答案 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准则了。