win7系統(tǒng)下載
當(dāng)前位置: 首頁 > 硬件軟件教程 > 詳細(xì)頁面

NSIS讀取注冊表_NSIS寫入/刪除注冊表鍵值基礎(chǔ)基礎(chǔ)圖文詳細(xì)教程

發(fā)布時間:2024-04-11 文章來源:深度系統(tǒng)下載 瀏覽:

NSIS是一個非常知名的小巧且功能強(qiáng)大的安裝程序打包工具,對于新手來說,很多人不知道NSIS讀取注冊表、NSIS寫入/刪除注冊表鍵值怎么操作,下面小編就給大家分享NSIS基礎(chǔ)入門教程之:NSIS讀取/寫入/刪除注冊表的操作命令代碼。

NSIS讀取注冊表 NSIS寫入/刪除注冊表鍵值基礎(chǔ)入門教程

方法步驟:

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  設(shè)置為  所有  與  HKCU 如果  SetShellVarContext  設(shè)置為  當(dāng)前。

如果無法將字符串寫入注冊表,則會設(shè)置錯誤標(biāo)志。WriteRegStr的字符串類型為REG_SZ,WriteRegExpandStr為REG_EXPAND_STR。如果注冊表項(xiàng)不存在,則將創(chuàng)建它

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

3、ReadRegDword

作用:從注冊表中讀取32位DWORD到用戶變量$ x。root_key的有效值列在WriteRegStr下。

如果DWORD不存在,將設(shè)置錯誤標(biāo)志并將$ x設(shè)置為空字符串(“”為0)。如果該值存在但不是DWORD,則將其作為字符串讀取,并將設(shè)置錯誤標(biāo)志。

  • ReadRegDWORD $0 HKLM Software \ NSIS VersionBuild

4、DeleteRegKey

作用:刪除注冊表項(xiàng)。

如果指定了/ ifempty,則只有在沒有子項(xiàng)的情況下才會刪除注冊表項(xiàng)(否則,將刪除整個注冊表樹)。root_key的有效值列在WriteRegStr下  。如果無法從注冊表中刪除密鑰(或者如果它不存在,則設(shè)置錯誤標(biāo)志)

[/ ifempty] root_key子項(xiàng)

  • DeleteRegKey HKLM "Software\My Company\My Software"
  • DeleteRegKey /ifempty HKLM "Software\A key that might have subkeys"

5、DeleteRegValue

作用:刪除注冊表值

root_key的有效值列在WriteRegStr下。如果無法從注冊表中刪除該值(或者如果它不存在,則設(shè)置錯誤標(biāo)志)。

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

6、EnumRegKey

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

使用root_key \ Subkey中的'index'th注冊表項(xiàng)的名稱設(shè)置用戶變量$ x。root_key的有效值列在WriteRegStr下。如果沒有其他鍵,則返回空字符串,并返回空字符串,并在出現(xiàn)錯誤時設(shè)置錯誤標(biāo)志。

  • 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注冊表值的名稱設(shè)置用戶變量$ x。root_key的有效值列在WriteRegStr下。返回一個空字符串,如果沒有更多值或者有錯誤,則設(shè)置錯誤標(biāo)志。

  • 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 檢測程序版本號、注冊表的寫入與讀取實(shí)例分享

  • !define PRODUCT_NAME "pkpm"
  • !define PRODUCT_VERSION "1.0"
  • !define PRODUCT_PUBLISHER "My company, Inc."
  • !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
  • !define PRODUCT_INSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Install\${PRODUCT_NAME}"
  • !define PRODUCT_UNINST_ROOT_KEY "HKLM"
  •  
  • #檢查程序的版本號
  • Function CompareVersion
  •  
  • #使用讀取注冊表檢測版本號
  •  ReadRegStr $0 HKLM ${PRODUCT_INSTALL_KEY} "Version"   ;PRODUCT_VERSION      ;用戶變量(輸出) 根鍵 子鍵 項(xiàng)
  •  
  •  ${IF} $0 != ""
  •    IntCmp ${PRODUCT_VERSION} $0 0 Old New
  •     MessageBox MB_YESNO  "安裝程序檢測到 $PRODUCT_NAME 已經(jīng)安裝,是否覆蓋安裝" IDYES Y IDNO N
  •    N:  
  •     Quit
  •    Old:
  •      MessageBox MB_ICONSTOP "安裝程序檢測到 $PRODUCT_NAME 已經(jīng)安裝了更新版本"
  •      Quit
  •    New:
  •      MessageBox MB_ICONSTOP "安裝程序檢測到 $PRODUCT_NAME 已經(jīng)安裝了舊版本,繼續(xù)更新安裝"
  •  ${ENDIF}
  •  Y:
  • FunctionEnd
  •  
  • #寫入注冊表的實(shí)例
  • WriteUninstaller "$INSTDIR\uninst.exe"  ;生成卸載exe,自動調(diào)用section Uninstall
  • WriteRegStr HKLM "${PRODUCT_INSTALL_KEY}" "Version" "${PRODUCT_VERSION}"   ; 根鍵 子鍵 項(xiàng) 值
本文章關(guān)鍵詞: NSIS讀取注冊表 
當(dāng)前原文鏈接:http://czecheden.com/soft/soft-48785.html