win32reg
win32reg
模块
win32reg
模块摘要
提供对Windows上注册表的访问。
描述
此模块提供对Windows上注册表的读写访问。它本质上是一个端口驱动程序,包装在Win 32 API调用中,用于访问注册表。
注册表是一个分层数据库,用于在Windows中存储各种系统和软件信息。它包含安装数据,并由安装程序和系统程序更新。Erlang安装程序通过添加Erlang所需的数据来更新注册表。
注册表包含项和值。键就像文件系统中的目录,它们形成层次结构。值就像文件,它们有一个名称和一个值,也有一个类型。
键的路径从左到右,子键在右边和键之间的反斜线。(请记住,Erlang字符串中的反斜杠必须加倍)Case保留但不重要。
例如,"\\hkey_local_machine\\software\\Ericsson\\Erlang\\5.0"
最新的Erlang版本的安装数据是关键。
在Windows注册表中有六个入口点,即顶级密钥。它们可以在这个模块中缩写如下:
Abbreviation Registry key
============ ============
hkcr HKEY_CLASSES_ROOT
current_user HKEY_CURRENT_USER
hkcu HKEY_CURRENT_USER
local_machine HKEY_LOCAL_MACHINE
hklm HKEY_LOCAL_MACHINE
users HKEY_USERS
hku HKEY_USERS
current_config HKEY_CURRENT_CONFIG
hkcc HKEY_CURRENT_CONFIG
dyn_data HKEY_DYN_DATA
hkdd HKEY_DYN_DATA
上面的关键字可以写成"\\hklm\\software\\ericsson\\erlang\\5.0"
。
该模块使用当前键。它的工作方式与当前目录非常相似。从当前键中可以获取值,可以列出子键等等。
在密钥下,可以存储任意数量的命名值。它们有名称、类型和数据。
win32reg
支持存储下列类型:
REG_DWORD
,它是一个整数。
REG_SZ
,这是一个字符串。
REG_BINARY
,这是一个二进制
其他类型可以读取,并作为二进制文件返回。
还有一个“默认”值,它有空字符串作为名称。它是用原子default
而不是名字读写的。
例如,某些注册表值存储为具有对环境变量的引用的字符串%SystemRoot%Windows
。SystemRoot
是一个环境变量,将被替换为它的值。expand/1
提供函数以便环绕的环境变量%
可以扩展到它们的值。
有关Windows注册表的更多信息,请参阅“Win32程序员参考”。
数据类型
reg_handle()
由open/1
返回
name() = string() | default
value() = string() | integer() | binary()
输出
change_key(RegHandle, Key) -> ReturnValue
类型
将当前密钥更改为另一个密钥。像cd
。该键可以指定为相对路径或绝对路径,以\.
开头
change_key_create(RegHandle, Key) -> ReturnValue
类型
创建一个密钥,或只是更改它,如果它已经存在。 像mkdir和cd的组合一样工作。 调用Win32 API函数RegCreateKeyEx()。
注册表必须以写模式打开。
close(RegHandle) -> ok
类型
关闭注册表。之后,RegHandle
不能使用。
current_key(RegHandle) -> ReturnValue
类型
返回当前键的路径。这相当于pwd
。
请注意,当前密钥存储在驱动程序中,并且可能无效(例如,如果密钥已被删除)。
delete_key(RegHandle) -> ReturnValue
类型
删除当前密钥,如果有效。调用Win32 API函数RegDeleteKey()
。注意这个调用不会改变当前的键(不像change_key_create/2
)。这意味着在通话之后,当前的密钥无效。
delete_value(RegHandle, Name) -> ReturnValue
类型
删除当前键上的命名值。原子default
用于默认值。
注册表必须以写模式打开。
expand(String) -> ExpandedString
类型
展开包含百分比字符之间的环境变量的字符串。两者之间的任何内容%
都是针对环境变量取而代之的。连续两次%
被一个%
替换
环境中不存在的变量名将导致错误。
format_error(ErrorId) -> ErrorString
类型
将POSIX错误代码转换为字符串(通过调用erl_posix_msg:message/1
)。
open(OpenModeList) -> ReturnValue
类型
打开注册表进行阅读或写作。当前的键是root(HKEY_CLASSES_ROOT
)。read
模式列表中的标志可以省略。
之后使用change_key/2
绝对路径open
。
set_value(RegHandle, Name, Value) -> ReturnValue
类型
将指定的(或默认)值设置为value
。调用Win32 API函数RegSetValueEx()
。该值可以是三种类型,并使用相应的注册表类型。支持的类型如下:
REG_DWORD
对于整数
REG_SZ
用于字符串
REG_BINARY
用于二进制
其他类型不能添加或更改。
注册表必须以写模式打开。
sub_keys(RegHandle) -> ReturnValue
类型
返回当前键的子键列表。调用Win32 API函数EnumRegKeysEx()
。
避免在根键上调用这个,因为它可能很慢。
value(RegHandle, Name) -> ReturnValue
类型
检索当前键上的命名值(或默认值)。类型的注册表值REG_SZ
作为字符串返回。类型REG_DWORD
值以整数形式返回。所有其他类型都作为二进制文件返回。
values(RegHandle) -> ReturnValue
类型
检索当前键上所有值的列表。这些值具有与注册表类型相对应的类型,请参阅value/2
。调用Win32 API函数EnumRegValuesEx()
。
另见
erl_posix_msg
,Windows 95注册表(来自O'Reilly的书),Win32程序员参考书(来自Microsoft)