# RegWrite

写入一个值到注册表中。

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 ）。要访问远程注册表，在前面加上电脑名和一个冒号，例如：\\workstation01:HKEY_LOCAL_MACHINE
SubKey | 子键的名字（例如 Software\SomeApplication）。如果 SubKey 不存在，将会自动创建（在它的父类之下，如果有的话）。如果 SubKey 留空，将把值直接写入到 RootKey 中（某些系统会拒绝将值直接写入 HKEY_CURRENT_USER 根键之下）。
ValueName | 需要写入值的项的名称。如果留空或省略，默认修改的是 Subkey 的默认值，也就是在 RegEdit 中显示为“(Default)/默认”的值
Value | 需要写入的值。如果省略，默认是一个空字符串，或 0 ，这个取决于 ValueType 。如果写入的文本过长，可以使用 continuation section/字符串分段 的方法将它分为几个短小的段落，这样可以增加代码的可读性和可维护性。

#### ErrorLevel

如果遇到问题，ErrorLevel/错误级别 被设置为 1 ，否则为 0 。

#### 注意

如果 ValueType 是 REG_DWORD ，Value 的取值范围是 -2147483648 到 4294967295（0xFFFFFFFF）。

REG_BINARY/二进制 和 REG_MULTI_SZ/多字符串 类型的值最多只能写入 64KB ，其它类型的值则没有限制。但是在 Windows 95/98/ME 下，所有类型的值最多只能写入 64KB 。如果超过 64KB ，则超过范围之后的数据将不会被写入。也就是说，在一个比较大的字符串中，只有最开始的 64KB 数据会被写入注册表。

当写入一个 REG_BINARY/二进制 类型的值的时候，使用一个16进制的字符串。例如，REG_BINARY/二进制 值为 01,a9,ff,77 ，写入的字符串为 01A9FF77 。

当写入一个 REG_MULTI_SZ/多字符串 类型的值的时候，你必须使用换行符（`n）来分隔各个部分，最后一个部分的结尾可以不使用换行符。任何一个部分都不能为空。也就是说，不要在一行中连着使用两个换行符（`n`n），因为这样会写入一个 shorter-than-expected/比预期短 的值。注意：Windows 95 不支持 REG_MULTI_SZ/多字符串 类型的值。

要返回多个注册表值或对多个注册表值进行操作，推荐使用 registry-loop 。

要获取访问远程注册表的详细资料，可以查看 registry-loop 中的注释。

#### 相关命令

RegDelete, RegRead, Registry-loop, IniWrite

#### 示例

    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