1. 程式人生 > >NSISI基本語法---登錄檔的操作

NSISI基本語法---登錄檔的操作

1、WriteRegStr

作用:把字串寫入登錄檔。

WriteRegStr HKLM "Software\My Company\My Software" "String Value" "dead beef"

2、WriteRegExpandStr

作用:將一個字串寫入登錄檔

root_key  必須是以下之一:

  • HKCR  或  HKEY_CLASSES_ROOT
  • HKLM  或  HKEY_LOCAL_MACHINE
  • HKCU  或  HKEY_CURRENT_USER
  • HKU  或  HKEY_USERS
  • HKCC  或  HKEY_CURRENT_CONFIG
  • HKDD  或  HKEY_DYN_DATA
  • HKPD  或  HKEY_PERFORMANCE_DATA
  • SHCTX  或  SHELL_CONTEXT

如果  root_key  是  SHCTX  或  SHELL_CONTEXT

,它會被替換成  HKLM  如果  SetShellVarContext  設定為  所有  與  HKCU 如果  SetShellVarContext  設定為  當前

如果無法將字串寫入登錄檔,則會設定錯誤標誌。WriteRegStr的字串型別為REG_SZ,WriteRegExpandStr為REG_EXPAND_STR。如果登錄檔項不存在,則將建立它

WriteRegExpandStr HKLM "Software\My Company\My Software" "Expand String Value" "%WINDIR%\ notepad.exe"

3、ReadRegDWORD

作用:從登錄檔中讀取32位DWORD到使用者變數$ x。root_key的有效值列在WriteRegStr下。

如果DWORD不存在,將設定錯誤標誌並將$ x設定為空字串(“”為0)。如果該值存在但不是DWORD,則將其作為字串讀取,並將設定錯誤標誌。

ReadRegDWORD $0 HKLM Software \ NSIS VersionBuild

4、DeleteRegKey

作用:刪除登錄檔項。

如果指定了/ ifempty,則只有在沒有子項的情況下才會刪除登錄檔項(否則,將刪除整個登錄檔樹)。root_key的有效值列在WriteRegStr下  。如果無法從登錄檔中刪除金鑰(或者如果它不存在,則設定錯誤標誌)

[/ ifempty] root_key子項
DeleteRegKey HKLM "Software\My Company\My Software"
DeleteRegKey /ifempty HKLM "Software\A key that might have subkeys"

5、DeleteRegValue

作用:刪除登錄檔值

root_key的有效值列在WriteRegStr下。如果無法從登錄檔中刪除該值(或者如果它不存在,則設定錯誤標誌)。

DeleteRegValue HKLM "Software\My Company\My Software" "some value"

6、EnumRegKey

作用:user_var(輸出)root_key子鍵索引

使用root_key \ Subkey中的'index'th登錄檔項的名稱設定使用者變數$ x。root_key的有效值列在WriteRegStr下。如果沒有其他鍵,則返回空字串,並返回空字串,並在出現錯誤時設定錯誤標誌。

StrCpy $0 0
loop:
  EnumRegKey $1 HKLM Software $0
  StrCmp $1 "" done
  IntOp $0 $0 + 1
  MessageBox MB_YESNO|MB_ICONQUESTION "$1$\n$\nMore?" IDYES loop
done:

7、EnumRegValue

作用:user_var(輸出)root_key子鍵索引

使用root_key \ Subkey中'index'th登錄檔值的名稱設定使用者變數$ x。root_key的有效值列在WriteRegStr下。返回一個空字串,如果沒有更多值或者有錯誤,則設定錯誤標誌。

StrCpy $0 0
loop:
  ClearErrors
  EnumRegValue $1 HKLM Software\Microsoft\Windows\CurrentVersion $0
  IfErrors done
  IntOp $0 $0 + 1
  ReadRegStr $2 HKLM Software\Microsoft\Windows\CurrentVersion $1
  MessageBox MB_YESNO|MB_ICONQUESTION "$1 = $2$\n$\nMore?" IDYES loop
done:

參考: NSIS使用手冊

Ma_Hong_Kai 學習筆記,如有錯誤之處,歡迎指正。