NSIS:无法在 Windows 7 上写入注册表 (HKLM\Software\...)

kas*_*aja 3 nsis windows-7

我正在将 NSIS 安装脚本从 XP 更新到 Win7。由于未知原因,如果在 Win7 下运行,即使以管理员身份运行,安装程序也无法写入注册表。安装程序中嵌入的 UAC 清单设置为需要管理员权限(通过在脚本中指定RequestExecutionLevel admin)。另外,我尝试右键单击安装程序并选择Run as administrator。在操作系统中关闭 UAC 也不能解决问题。

当我在 XP 下运行相同的安装程序时,注册表项按预期编写。

我配对了我的安装脚本以尝试隔离问题:

!define APP_NAME      "MyTestApp"

Name                  "${APP_NAME}"
OutFile               "${APP_NAME} Setup.exe"

RequestExecutionLevel admin
Page instfiles

Section -Core
   SetDetailsView show 

   WriteRegStr HKLM "Software\XyzCompany\${APP_NAME}\Installation" "VersionString" "V0.0.0"

   SetAutoClose false
SectionEnd
Run Code Online (Sandbox Code Playgroud)

另一方面,我可以写入受限制的文件夹(例如 C:\ProgramData)(此处默认只有 admin 具有写入权限)。我在这里错过了一些非常明显的东西吗?运行 NSIS 2.45。

And*_*ers 5

使用SetRegView写入HKLM\Softwarex64 上的“真实”键。

使用进程监视器调查其他注册表写入问题...

  • 运行 64 位 Win7。是的,事实证明该值已写入注册表,但在 Wow6432Node 分支下。我不知道 64 位机器上的 32 位应用程序有一个单独的注册表分支。为 hjelpen 加油!! (2认同)