2016-07-08 7 views
0

私はWindowsレジストリからNSIS経由でアプリケーション名を読みたいと思っています。32/64ビットアプリケーションをチェックするためのレジストリキーの読み込み

ReadRegStr $R1 HKLM "SOFTWARE\Something\Something\" "ApplicationName"

$R1の値の出力は常になし「アプリケーション」です:
アプリケーション名は、「アプリケーション(x86の)」または「アプリケーション(x64)の」私は、次のコードを使用してい であってもよいです角かっこ。
ReadRegStrは常に特殊文字を無視しますか?
回避策はありますか?

答えて

1

ReadRegStrはどのような方法で文字列をフィルタリングしない:

Section 
; Write the test string first 
WriteRegStr HKCU "Software\NSIS\Test\" "Application" "Application (x86)" 

; ...and then read it and display the result 
ReadRegStr $R1 HKCU "Software\NSIS\Test\" "Application" 
MessageBox MB_OK "$R1" 

; Cleanup 
DeleteRegKey HKCU "Software\NSIS\Test\" 
SectionEnd 

は、それはあなたが、レジストリのリダイレクト/反射または32対64ビットによって引き起こされるレジストリ内の間違った場所に古い文字列を読んでいることは可能ですビュー?

Process Monitorでインストーラを監視すると、読んでいるレジストリ内の実際の場所とアプリケーションに返された値が表示されます。

+0

問題は32/64ビットビューでした。 "SetRegView 32"と "SetRegView 64"を使って解決しました。 – Joe

関連する問題