# RegWrite

写入值到注册表.

    RegWrite Value, ValueType, KeyName , ValueName
    RegWrite Value , ValueType, , ValueName

## 参数

Value

  类型: 字符串或整数

  要写入的值. 如果文本较长, 可以通过延续片段的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.

ValueType

  类型: 字符串

  必须为 REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD 或 REG_BINARY 的其中一个.

  只有在 KeyName 省略和注册表循环中项目是值时, 才能省略 ValueType, 如下所示.

KeyName

  类型: 字符串

  注册表键的全名, 例如 `"HKLM\Software\SomeApplication"`.

  必须以 HKEY_LOCAL_MACHINE(或 HKLM), HKEY_USERS(或 HKU), HKEY_CURRENT_USER(或 HKCU), HKEY_CLASSES_ROOT(或 HKCR) 或 HKEY_CURRENT_CONFIG(或 HKCC) 开始.

  要访问远程注册表, 请在前面加上计算机名和反斜杠, 例如 `"\\workstation01\HKLM"`.

  只有在注册表循环时, 才能省略 KeyName, 在这种情况下, 默认为当前循环项目的键. 如果项目是子键, 则默认使用该子键的全名. 如果项目是值, ValueType 和 ValueName 默认为值的类型和名称, 但是可以被重写.

ValueName

  类型: 字符串

  如果未设置或省略, 将删除键的默认值(除了上面提到的), 这是在 RegEdit 中显示为 "(默认)" 的值. 否则, 请指定要写入的值的名称.

## 错误处理

失败时抛出 OSError.

A_LastError 被设置为操作系统 GetLastError() 函数返回的结果.

## 备注

如果 KeyName 指定的子键不存在, RegWrite 将尝试创建它(如果需要, 还将创建它的父键). 虽然 RegWrite 可以直接写入根键, 但是一些操作系统可能会拒绝写入到 HKEY_CURRENT_USER 的顶层.

要创建一个键而不写入任何值, 请使用 RegCreateKey.

如果 ValueType 为 REG_DWORD, 则 Value 应该介于 -2147483648 和 4294967295(0xFFFFFFFF) 之间. 在注册表中, REG_DWORD 值总是表示为正的十进制数. 若要使用 RegRead 等方法将其作为负数读取, 请使用 `OutputVar := OutputVar << 32 >> 32` 类似方法将其转换为带符号的 32 位整数.

写入 REG_BINARY 键时, 请使用十六进制的字符串, 例如 REG_BINARY 值 01,a9,ff,77 可以使用字符串 01A9FF77 写入.

写入 REG_MULTI_SZ 键时, 你必须使用换行符(`n) 分隔各个部分. 最后一个部分后面的换行符是可选的. 不允许存在空的部分. 换句话说, 在一行中不能连续指定两个换行符(`n`n), 因为这样会导致写入到注册表的值比期望的短.

要检索和操作多个注册表键或值, 请考虑使用注册表循环.

有关如何访问远程计算机注册表的详情, 请参阅注册表循环中的备注.

从 32 位脚本中读取或写入注册表的 64 位部分中的条目, 反之亦然, 请使用 SetRegView.

## 相关

RegCreateKey, RegDelete, RegDeleteKey, RegRead, 注册表循环, SetRegView, IniWrite

## 示例

向注册表写入一个字符串.

    RegWrite "Test Value", "REG_SZ", "HKEY_LOCAL_MACHINE\SOFTWARE\TestKey", "MyValueName"

将二进制数据写入注册表.

    RegWrite "01A9FF77", "REG_BINARY", "HKEY_CURRENT_USER\Software\TEST_APP", "TEST_NAME"

向注册表写入一个多行字符串.

    RegWrite "Line1`nLine2", "REG_MULTI_SZ", "HKEY_CURRENT_USER\Software\TEST_APP", "TEST_NAME"

dftg