RegKey 数据类型[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |REG_NONE | REG_EXPAND_SZ ]
时间: 2024-09-27 17:01:41 浏览: 61
RegKey 数据类型是 Windows 注册表中用于存储数据的一些基本类别,它们定义了不同类型的数据结构:
1. **REG_SZ (字符串)**:用于存储单行的 Unicode 字符串。这个值通常显示为文本形式。
2. **REG_MULTI_SZ (多字符串)**:用于存储一系列的字符串,每个字符串占一行。
3. **REG_DWORD (双字节有符号整数)**:用于存储 32 位有符号整数值,小端模式(对于 LittleEndian 架构)或大端模式(BigEndian架构)。
4. **REG_DWORD_BIG_ENDIAN (大端双字节有符号整数)**:仅适用于 BigEndian 架构,存储 32 位有符号整数。
5. **REG_DWORD_LITTLE_ENDIAN (小端双字节有符号整数)**:默认情况下的双字节有符号整数,适用于 LittleEndian 架构。
6. **REG_BINARY (二进制)**:用于存储任意二进制数据,无特定格式。
7. **REG_NONE (空)**:表示注册表键不存在或已被删除。
8. **REG_EXPAND_SZ (展开字符串)**:类似于 REG_SZ,但在保存时会自动展开环境变量和 % 符号。
相关问题
!include LogicLib.nsh !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_DIR_REGKEY "Software\JzbProductionTool" !define DIR "D:\JzbProductionTool\" Function .onInit ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" "Path" ${If} $R0 != "" StrCpy $INSTDIR $R0 ${Else} StrCpy $INSTDIR ${DIR} ${EndIf} FunctionEnd
这段 NSIS 脚本代码使用了 `LogicLib.nsh` 插件,定义了一些常量,并编写了一个 `.onInit` 回调函数。让我们逐行分析它的作用:
1. `!include LogicLib.nsh`:包含了 `LogicLib.nsh` 插件,该插件提供了一些逻辑判断和操作的函数。
2. `!define PRODUCT_UNINST_ROOT_KEY "HKLM"`:定义了一个常量 `PRODUCT_UNINST_ROOT_KEY`,表示产品的卸载根键,这里设置为 `HKLM`,即 HKEY_LOCAL_MACHINE。
3. `!define PRODUCT_DIR_REGKEY "Software\JzbProductionTool"`:定义了一个常量 `PRODUCT_DIR_REGKEY`,表示产品的注册表路径,这里设置为 `Software\JzbProductionTool`。
4. `!define DIR "D:\JzbProductionTool\"`:定义了一个常量 `DIR`,表示默认的安装路径,这里设置为 `D:\JzbProductionTool\`。
5. `Function .onInit`:定义了 `.onInit` 回调函数,在安装程序初始化时被调用。
6. `ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" "Path"`:使用 `ReadRegStr` 函数读取注册表路径 `${PRODUCT_UNINST_ROOT_KEY}\${PRODUCT_DIR_REGKEY}` 中的键值 `"Path"`,将结果保存在变量 `$R0` 中。
7. `${If} $R0 != ""`:使用逻辑判断函数 `${If}` 判断变量 `$R0` 是否不为空。
8. `StrCpy $INSTDIR $R0`:如果 `$R0` 不为空,则将 `$R0` 的值赋给 `$INSTDIR`,即设置安装路径为上一次安装的路径。
9. `${Else}`:如果 `$R0` 为空,则执行下面的代码块。
10. `StrCpy $INSTDIR ${DIR}`:将默认的安装路径 `${DIR}` 赋给 `$INSTDIR`,即设置安装路径为默认路径。
11. `${EndIf}`:结束逻辑判断。
12. `FunctionEnd`:结束回调函数的定义。
总体来说,这段代码的作用是在安装程序初始化时读取注册表中的路径,如果存在上一次安装的路径,则使用该路径作为安装路径;如果不存在,则使用默认的路径。
阅读全文