RegRead


从注册表中读取一个值。

RegRead, OutputVar, RootKey, SubKey [, ValueName]

参数

OutputVar 存储返回值的变量名。如果获取值失败,它会被设置为空,同时 ErrorLevel/错误级别 被设置为 1 。
RootKey 只能是 HKEY_LOCAL_MACHINE 、HKEY_USERS 、HKEY_CURRENT_USER 、HKEY_CLASSES_ROOT 、HKEY_CURRENT_CONFIG 其中之一(或者它们的缩写,例如 HKLM )。要访问远程注册表,在前面加上电脑名和一个冒号,例如:\\workstation01:HKEY_LOCAL_MACHINE
SubKey 子键的名字(例如 Software\SomeApplication)。
ValueName 需要读取的项的名称。如果省略,将返回 Subkey 的默认值,也就是在 RegEdit 中显示为“(Default)/默认”的值。如果没有默认值(也就是 RegEdit 中显示“value not set/数值未设置”),OutputVar 被设置为空,同时 ErrorLevel/错误级别 被设置为 1 。

ErrorLevel/错误级别

如果遇到问题(例如读取不存在的键或值),ErrorLevel/错误级别 被设置为 1 ,否则为 0 。

注意

目前只支持这些类型的值:REG_SZ/字符串值 ,REG_EXPAND_SZ/可扩充字符串值 ,REG_MULTI_SZ/多字符串值 ,REG_DWORD/DWORD值 ,以及 REG_BINARY/二进制值 。

REG_DWORD/DWORD 类型的值总是被转换为正的十进制数字。

REG_BINARY/二进制 类型的值最多只能读取 64KB ,其它类型的值则没有限制。但是在 Windows 95/98/ME 下,所有类型的值最多只能读取 64KB( Win9x 的注册表不能存储过大的数据)。

当读取 REG_BINARY/二进制 类型的值的时候,会返回一个16进制的字符串。例如,REG_BINARY/二进制 值为 01,a9,ff,77 ,读取出来的结果为 01A9FF77 。

当读取一个 REG_MULTI_SZ/多字符串 类型的值的时候,值的每一个部分以换行符分隔(`n)。如果值为空,OutputVar 被设置为空。FileSelectFile 中的示例演示了怎么将 OutputVar 分解为各个独立的部分。注意:Windows 95 不支持 REG_MULTI_SZ/多字符串 类型的值。

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

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

相关命令

RegDelete, RegWrite, Registry-loop, IniRead

示例

RegRead, OutputVar, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir
MsgBox, Program files are in: %OutputVar%

 

; 下面的例子返回一个注册表值的类型(例如 REG_SZ/字符串值 或 REG_DWORD/DWORD值)。
MsgBox % RegKeyType("HKCU", "Environment", "TEMP")
return

RegKeyType(RootKey, SubKey, ValueName)  ; 这个函数返回指定值的类型。
{
    Loop, %RootKey%, %SubKey%
        if (A_LoopRegName = ValueName)
            return A_LoopRegType
    return "Error"
}