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

4
我正在将一个NSIS安装脚本从XP更新到Win7。但是,即使以管理员身份运行,由于未知原因,安装程序在Win7下无法写入注册表。安装程序中嵌入的UAC清单设置为需要管理员权限(通过在脚本中指定RequestExecutionLevel admin)。此外,我尝试右键单击安装程序并选择以管理员身份运行。关闭操作系统中的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

另一方面,我能够写入受限文件夹(例如C:\ProgramData)(默认情况下只有管理员具有写访问权限)。这里是我漏掉了什么非常明显的东西吗?运行NSIS 2.45。


你试过v2.46吗?这是Win7 x86还是x64? - Anders
1个回答

5

使用 SetRegView 可以在 x64 上写入到真正的 HKLM\Software 键。

使用 Process Monitor 来调查其他注册表写入问题...


3
运行64位Win7。是的,结果发现该值已写入注册表,但写到Wow6432Node分支下面。我不知道在64位机器上有一个独立的注册表分支用于32位应用程序。谢谢你的帮助! - kashiraja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接