使用NSIS编写注册表项失败

时间:2019-02-01 11:35:17

标签: windows registry nsis registrykey

我有一个相对简单的NSIS安装程序,需要将一些注册表项写入注册表。不幸的是,这不起作用。相关代码部分为:

RequestExecutionLevel admin

Function .onInit
  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" "" ""
FunctionEnd

据我了解,在每种情况下都调用.oninit吗?但是,在执行此安装程序的.exe之后,我看不到新的密钥“ LocalDump”。这有什么问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

64位Windows具有two registry "views",而32位应用程序默认情况下会看到32位视图。您可以使用SetRegView指令来强制32位NSIS安装程序写入64位视图:

!include x64.nsh
!include LogicLib.nsh

Section
${If} ${RunningX64}
  SetRegView 64
  WriteRegStr ... value for 64-bit systems
  SetRegView LastUsed
${Else}
  WriteRegStr ... value for 32-bit systems
${EndIf}
SectionEnd

.onInit始终执行,但是您不应该在此真正更改系统,因为用户可能会取消安装。您应该在Section s中执行大多数与安装相关的操作。