RegWrite

写入值到注册表.

新语法 [v1.1.21+]

RegWrite, ValueType, KeyName , ValueName, Value

参数

ValueType

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

KeyName

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

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

要访问远程注册表, 请在前面加上计算机名和冒号(或在 [v1.1.21+], 可用反斜杠 \), 例如 \\workstation01\HKLM

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(或 HKLM), HKEY_USERS(或 HKU), HKEY_CURRENT_USER(或 HKCU), HKEY_CLASSES_ROOT(或 HKCR) 或 HKEY_CURRENT_CONFIG(或 HKCC) 的其中一个.

要访问远程注册表, 请在前面加上计算机名和冒号(或在 [v1.1.21+], 可用反斜杠 \), 例如 [v1.1.21+] \\workstation01\HKEY_LOCAL_MACHINE.

SubKey

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

ValueName

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

Value

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

错误处理

[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