当路径或值中存在空格时,Nsis ReadReStr无法读取

时间:2019-03-14 16:38:55

标签: registry nsis

我正在尝试测试该功能以读取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

我认为问题是由路径中的空格引起的。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

您很可能查看了错误的注册表项。 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"