2015-01-14 56 views
0

我已經發布了類似的問題(NSIS - check if registry key value exists),並解決這個問題完美工作:讀註冊表鍵值失敗

ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" 

然後:

${If} ${Errors} 
#and so on 

我做同樣的事情腳本中有三次以上,讀取不同的註冊表值和所有嘗試,但最後一次都成功:

ReadRegStr $3 HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name" 

這總是返回一個錯誤。

我應該做些什麼不同?

我第一次讀取註冊表值時,我用$0來存儲返回值。然後第二次$1,然後$2$3

正如我所說,除了最後一個以外的所有工作。它是否與我正在閱讀的註冊表鍵類型有關,還是應該爲返回值使用不同的變量?我嘗試了其他變量,但到目前爲止沒有任何工作。

感謝您的幫助和提示!

回答

2

ReadRegStr $3 HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name" 

的問題是,您所指定的根兩次:

  • HKLM
  • HKEY_LOCAL_MACHINE\...

從子鍵值名刪除HKEY_LOCAL_MACHINE,它應該好的。對於HKEY_USERS

  • HKCRHKEY_CLASSES_ROOT
  • HKLMHKEY_LOCAL_MACHINE
  • HKCUHKEY_CURRENT_USER
  • HKU:如果您需要訪問註冊表的另一部分,如WriteRegExpandStr manual section描述改變ReadRegStr 2參數
  • HKCC for HKEY_CURRENT_CONFIG
  • HKDDHKEY_DYN_DATA
  • HKPDHKEY_PERFORMANCE_DATA
  • SHCTXSHELL_CONTEXT
+0

你怎麼不看這些東西有時是令人難以置信的。我在我的腳本中查詢了4次註冊表,3次我正確地寫入了它,第4次我寫了兩次根...你會想到會注意到...謝謝! – user3629892

+0

不客氣。我們每次都會錯過一些事情:o)如果有幫助,請考慮[接受答案](http://meta.stackoverflow。com/a/65088/173356) – Seki