NSIS是一个非常知名的小巧且功能强大的安装程序打包工具,对于新手来说,很多人不知道NSIS读取注册表、NSIS写入/删除注册表键值怎么操作,下面IT备忘录小编就给大家分享NSIS基础入门教程之:NSIS读取/写入/删除注册表的操作命令代码。
方法步骤:
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 VersionBuild4、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 0loop:EnumRegKey $1 HKLM Software $0StrCmp $1 "" doneIntOp $0 $0 + 1MessageBox MB_YESNO|MB_ICONQUESTION "$1$\n$\nMore?" IDYES loopdone:7、EnumRegValue
作用:user_var(输出)root_key子键索引
使用root_key \ Subkey中'index'th注册表值的名称设置用户变量$ x。root_key的有效值列在WriteRegStr下。返回一个空字符串,如果没有更多值或者有错误,则设置错误标志。
StrCpy $0 0loop:ClearErrorsEnumRegValue $1 HKLM Software\Microsoft\Windows\CurrentVersion $0IfErrors doneIntOp $0 $0 + 1ReadRegStr $2 HKLM Software\Microsoft\Windows\CurrentVersion $1MessageBox MB_YESNO|MB_ICONQUESTION "$1 = $2$\n$\nMore?" IDYES loopdone:NSIS 检测程序版本号、注册表的写入与读取实例分享
!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 ;用户变量(输出) 根键 子键 项 ${IF} $0 != "" IntCmp ${PRODUCT_VERSION} $0 0 Old New MessageBox MB_YESNO "安装程序检测到 $PRODUCT_NAME 已经安装,是否覆盖安装" IDYES Y IDNO N N: Quit Old: MessageBox MB_ICONSTOP "安装程序检测到 $PRODUCT_NAME 已经安装了更新版本" Quit New: MessageBox MB_ICONSTOP "安装程序检测到 $PRODUCT_NAME 已经安装了旧版本,继续更新安装" ${ENDIF} Y:FunctionEnd#写入注册表的实例WriteUninstaller "$INSTDIR\uninst.exe" ;生成卸载exe,自动调用section UninstallWriteRegStr HKLM "${PRODUCT_INSTALL_KEY}" "Version" "${PRODUCT_VERSION}" ; 根键 子键 项 值以上就是IT备忘录小编给大家分享的NSIS读取/写入/删除注册表操作命令代码,如果本教程对您有帮助,请转载分享并附上本页面地址。