# RegWrite

写入值到注册表.

## 新语法 [v1.1.21+]

    RegWrite, ValueType, KeyName , ValueName, Value

### 参数

ValueType

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

KeyName

  注册表键的全名.

  必须以 HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT 或 HKEY_CURRENT_CONFIG(或这些的缩写, 如 HKLM) 开始. 要访问远程注册表, 请在前面加上计算机名和冒号(或在 [v1.1.21+], 可用斜杠 / 或 \), 就像在本例中一样: `\\workstation01:HKEY_LOCAL_MACHINE`, 或 [v1.1.21+] `\\workstation01\HKEY_LOCAL_MACHINE`

ValueName

  将被写入的值的名称. 如果为空或省略, KeyName 的默认值将被使用, 这是在注册表中值名显示为 "(默认)" 的值.

Value

  要写入的值. 如果省略, 则根据 ValueType 的不同, 它默认为空字符串或 0. 如果文本较长, 可以通过延续片段的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.

## 传统语法

过时的: 不推荐在新脚本中使用此语法. 请使用新语法.

    RegWrite, ValueType, RootKey, SubKey , ValueName, Value

### 参数

ValueType

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

RootKey

  必须为 HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT 或 HKEY_CURRENT_CONFIG 的其中一个(或者它们的缩写, 例如 HKLM). 要访问远程注册表, 请在前面加上计算机名和冒号(或在 [v1.1.21+], 可用斜杠 / 或 \), 就像在本例中一样: `\\workstation01:HKEY_LOCAL_MACHINE`, 或 [v1.1.21+] `\\workstation01\HKEY_LOCAL_MACHINE`

SubKey

  子键名(例如 Software\SomeApplication). 如果 SubKey 不存在, 则进行创建(需要时创建它的父键以及父键的父键等). 如果 SubKey 留空, 则直接把值写入到 RootKey(不过一些操作系统可能会拒绝写入到 HKEY_CURRENT_USER 的根键中).

ValueName

  将被写入的值的名称. 如果为空或省略, 则使用 Subkey 的默认值, 这是在注册表中值名显示为 "(默认)" 的值.

Value

  要写入的值. 如果省略, 则根据 ValueType 的不同它默认为空字符串或 0. 如果文本较长, 可以通过延续片段的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.

## 错误处理

[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.

如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.

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

## 备注

如果 ValueType 为 REG_DWORD, 则 Value 应该介于 -2147483648 和 4294967295(0xFFFFFFFF) 之间.

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

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

[v1.1.10.01+]: 支持大于 64K 的 REG_BINARY 和 REG_MULTI_SZ 值. 在旧版本中, 它们会被截断为 64K.

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

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

要在 32 位脚本中读写注册表 64 位部分的条目或进行相反的操作, 请使用 SetRegView.

## 相关

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

## 示例

新语法 vs. 旧语法.

尽管语法不同, 但这两个例子的效果是一样的; 即, 它们向注册表写入一个字符串.

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

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

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

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

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

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

dftg