当路径或值中存在空间时,Nsis ReadReStr不读取

问题描述 投票:-1回答:1

我正在尝试测试函数来读取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

我认为问题是由路径中的空间创建的。我该如何解决?

registry nsis
1个回答
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"
© www.soinside.com 2019 - 2024. All rights reserved.