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
如果無法將字串寫入登錄檔,則會設定錯誤標誌。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 學習筆記,如有錯誤之處,歡迎指正。