Nsis ReadReStr не читает, когда в пути или значении присутствует пробел - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь проверить функцию чтения реестра в 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 голосов
/ 14 марта 2019

Скорее всего, вы ищете неправильный раздел реестра.64-разрядная версия Windows имеет два представления реестра .Вы также написали RegisteredApplications неправильно, это не RegistredAplications!

Вы можете получить доступ к другому представлению в NSIS с помощью SetRegView:

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"
...