首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

win32reg

模块

win32reg

模块摘要

提供对Windows上注册表的访问。

描述

此模块提供对Windows上注册表的读写访问。它本质上是一个端口驱动程序,包装在Win 32 API调用中,用于访问注册表。

注册表是一个分层数据库,用于在Windows中存储各种系统和软件信息。它包含安装数据,并由安装程序和系统程序更新。Erlang安装程序通过添加Erlang所需的数据来更新注册表。

注册表包含项和值。键就像文件系统中的目录,它们形成层次结构。值就像文件,它们有一个名称和一个值,也有一个类型。

键的路径从左到右,子键在右边和键之间的反斜线。(请记住,Erlang字符串中的反斜杠必须加倍)Case保留但不重要。

例如,"\\hkey_local_machine\\software\\Ericsson\\Erlang\\5.0"最新的Erlang版本的安装数据是关键。

在Windows注册表中有六个入口点,即顶级密钥。它们可以在这个模块中缩写如下:

代码语言:javascript
复制
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%WindowsSystemRoot是一个环境变量,将被替换为它的值。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)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com