从注册表中读取一个值。
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/错误级别 被设置为 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" }