2016-07-08 80 views
0

我想通過NSIS從Windows註冊表中讀出我的應用程序名稱。
應用程序的名稱可以是「應用程序(86)」或「應用程序(64)」我使用以下代碼 :閱讀註冊表項檢查六十四分之三十二位應用

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

$R1值的輸出始終爲「應用程序」而不括號。
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