0
我需要在註冊表根的變量傳遞給循環來收集所有已安裝的Python版本(版本不同,可以爲所有用戶安裝或當前用戶),但下面的簡化代碼段不會編譯:如何在NSIS中的註冊表根上編寫循環?
Var PYTHON_VERSION
Var REGISTRY_ROOTS
Var REGISTRY_ROOT
Function getPythonVersions
StrCpy $REGISTRY_ROOTS "HKLM HKCU"
StrCpy $1 1
loop:
${WordFind} "$REGISTRY_ROOTS" " " "E+$1" $REGISTRY_ROOT
StrCmp $REGISTRY_ROOT "2" done
EnumRegKey $PYTHON_VERSION $REGISTRY_ROOT "Software\Python\PythonCore" 0
MessageBox MB_OK "$PYTHON_VERSION"
IntOp $1 $1 + 1
goto loop
done:
FunctionEnd
我得到以下錯誤:
Usage: EnumRegKey $(user_var: output) rootkey subkey index root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD|SHCTX)
有什麼辦法來遍歷註冊表根源是什麼?
非常感謝!我以包裝該命令到一個宏結束,但會看到註冊表插件。第二個建議的解決方案對我來說並不好,因爲它只會根據用戶環境檢查一個註冊表樹。 – jollyroger
@jollyroger:你可以在循環中使用SHCTX,使用「all」和「current」來獲得HKLM和HKCU – Anders