我正在尝试测试函数来读取nsis中的注册表。
我在我的nsis脚本中有这个。
section
ReadRegStr $0 HKLM "Software\Mozilla\Mozilla Firefox" "CurrentVersion"
DetailPrint "Mozilla version: $0"
ReadRegStr $0 HKLM "Software\RegistredAplications" "Google Chrome"
DetailPrint "Chrome: $0"
ReadRegStr $0 HKLM "Software\vim\gvim" "path"
DetailPrint "Gvim path: $0"
ReadRegStr $0 HKLM Software\NSIS ""
DetailPrint "NSIS is installed at: $0"
sectionend
输出是:
Mozilla version:
Chrome:
Gvim path: C:\Program Files (x86)\Vim\vim81\gvim.exe
NSIS is installed at: C:\Program Files (x86)\NSIS
Completed
我认为问题是由路径中的空间创建的。我该如何解决?
您很可能正在查看错误的注册表项。 64位Windows有two registry views。你也错误拼写RegisteredApplications
,它不是RegistredAplications
!
您可以使用SetRegView
访问NSIS中的其他视图:
SetRegView 64
ReadRegStr $0 HKLM "Software\RegistredAplications" "Google Chrome"
SetRegView LastUsed
DetailPrint "64-bit Chrome: $0"
或者,如果您使用的是最新版本的NSIS v3,则可以直接访问64位密钥:
ReadRegStr $0 HKLM64 "Software\RegisteredApplications" "Google Chrome"
DetailPrint "64-bit Chrome: $0"
ReadRegStr $0 HKLM32 "Software\RegisteredApplications" "Google Chrome"
DetailPrint "32-bit Chrome: $0"