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 09:01:41 浏览: 6
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,但在保存时会自动展开环境变量和 % 符号。
相关问题
vb.net 代码设置注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 中ConsentPromptBehaviorAdmin项目的值为0
在VB.NET中,你可以使用`Microsoft.Win32`命名间来设置注册表中指定键的值。下面是一个示例代码,演示如何将`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`下的`ConsentPromptBehaviorAdmin`项目的值设置为0:
```vb
Imports Microsoft.Win32
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 打开注册表项
Dim regKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", True)
' 写入键值对
regKey.SetValue("ConsentPromptBehaviorAdmin", 0, RegistryValueKind.DWord)
' 关闭注册表项
regKey.Close()
MessageBox.Show("注册表值设置成功!")
End Sub
End Class
```
在上述示例中,我们首先使用`Registry.LocalMachine.OpenSubKey`方法打开注册表的`HKEY_LOCAL_MACHINE`根键下的子键`SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`,然后使用`SetValue`方法将`ConsentPromptBehaviorAdmin`的值设置为0。最后,关闭注册表项。
请注意,对于写入注册表的操作,需要适当的权限。如果你的应用程序需要以管理员权限运行,你可能需要在前面的步骤中将应用程序清单文件配置为要求管理员权限。
!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`:结束回调函数的定义。
总体来说,这段代码的作用是在安装程序初始化时读取注册表中的路径,如果存在上一次安装的路径,则使用该路径作为安装路径;如果不存在,则使用默认的路径。