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

Is there a way to use NSIS to install an app in Win10 that can read C:\Windows?

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

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

谢谢!

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

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

您最好的选择是修改您的应用程序,使其 requests UAC elevation in its manifest. If the application does not already have a embedded manifest (not requesting ComCtl32 v6 etc.) then you can theoretically use a 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 指导方针方面已经过去了。