2011-07-15 9 views
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)

は、レジストリの根をループする方法はありますか?

答えて

0

悲しいことに、それらをハードコードする必要があります。変数を使用することはできません。

次のことが可能です。

を複製... 。

+0

ありがとう!私はそのコマンドをマクロにラップして終了しましたが、レジストリ・プラグインを調べます。 2番目に提案された解決策は、ユーザーの環境に応じて1つのレジストリツリーだけをチェックするので、私にとってはあまり役に立ちません。 – jollyroger

+1

@jollyroger:SHCTXを "all"と "current"の両方を使用してループで使用すると、HKLMとHKCUを取得できます – Anders

関連する問題