65.9K
CodeProject 正在变化。 阅读更多。
Home

注册表类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.55/5 (9投票s)

2001年3月28日

21分钟阅读

viewsIcon

85184

downloadIcon

1416

这表示我构建了一组方便的类,以减轻处理注册表的痛苦。

引言

这表示我构建了一组方便的类,以减轻处理注册表的痛苦。除了RegVars.h中定义的一组高级类之外,还有一个单独的库,由`RegVars`模块Registry.h使用。这包括所有四个文件的完整源代码的下载链接。本文档的其余部分描述了接口。

概述

使用注册表可能很不方便。您必须学习所有的注册表API,学习如何创建键,然后发现您必须递归创建键。这真是太痛苦了。

我创建了这些类和库,以便轻松地执行注册表中的简单任务。它要求您在包含它的模块的字符串表中定义几个字符串,其中最重要的是

IDS_ROOT_PATH  "Software\\YourCompanyName\\YourProductName"

通过此库对注册表的所有访问都将相对于此键。

注册表类           

对于大多数简单的情况,例如整数或字符串,您可以使用注册表类`RegistryInt`和`RegistryString`。

要使用这些,您只需声明一个带有所需访问键的字符串表条目,该键本身可能包含用于子路径的\字符,例如

IDS_MY_COUNTER  "Count"

然后声明一个形式为

RegistryInt count(IDS_MY_COUNTER);

的变量,然后加载它,您将编写

count.load(defaultvalue); // argument optional, 0 assumed

然后,您可以通过使用以下方式访问类型为`int`的值:

count.value

如果您想将值存储在注册表中,请将`count.value`设置为您要存储的值,然后执行

count.store();

该值将存储在注册表中。如果路径的步骤不存在,它们将被创建。

相应的字符串类型是`RegistryString`,并且`.value`成员是`CString`。

RegistryString s(IDS_MY_STRING);
s.load();; // defaults to ""

将从注册表加载一个字符串值。

注册表库          

注册表库是注册表类的基础,它提供了更详细的控制。我没有为某些接口提供类,因为它们使用频率不高,所以我没有费心为它们创建类。

注册表库允许设置和检索字符串值整数值64位整数值GUID字体描述窗口位置描述DWORD值数组,以及删除键和值、枚举键和值的能力,以及简单地获取键的句柄以进行更详细的注册表API操作。

像注册表类一样,这些操作始终相对于`IDS_PROGRAM_ROOT`工作,并在设置操作时自动创建路径的步骤。

RegVars.h

尽管要使用它您只需包含此头文件,但您必须*链接*注册表库,这些类使用的方法会调用该库来执行实际的注册表操作。如果您在任何项目文件中包含此文件,则必须包含RegVars.cpp在您的项目中或链接已编译版本RegVars.obj.

RegistryInt          

RegistryInt::RegistryInt(UINT id, HKEY r = HKEY_CURRENT_USER)

构造`RegistryInt`类型的变量。

参数

UINT id

存储或检索值的注册表键的字符串表ID。

HKEY r

指定键的根键。它将在键下找到

r\%IDS_PROGRAM_ROOT%\%id%

RegistryInt::load(int def = 0);

从注册表加载值。提供默认值。当此方法返回时,变量的`.value`成员将具有注册表中的值或默认值。

int def

如果在注册表中找不到键,则使用的值。
RegistryInt::store();

将值存储到变量指定的键下的注册表中。将存储`.value`成员的当前内容。

int value;

这是类的`.value`成员。

RegistryString          

RegistryString::RegistryString(UINT id, HKEY r = HKEY_CURRENT_USER)

构造`RegistryString`类型的变量。

参数

UINT id

存储或检索值的注册表键的字符串表ID。

HKEY r

指定键的根键。它将在键下找到

r\%IDS_PROGRAM_ROOT%\%id%

RegistryString::load(LPCTSTR def = NULL);

从注册表加载值。提供默认值。当此方法返回时,变量的`.value`成员(一个`CString`)将具有注册表中的值或默认值。如果字符串参数值是`NULL`,则`.value`成员被设置为空字符串。

int def

如果在注册表中找不到键,则使用的值。
RegistryString::store();

将值存储到变量指定的键下的注册表中。将存储`.value`成员的当前内容。

CString value;

这是类的`.value`成员。

Registry.h          

Registry.cpp模块提供对注册表的更直接访问。所有操作都相对于字符串表条目`IDS_PROGRAM_ROOT`指定的字符串执行。

当您需要更精细的控制时,例如在创建动态计算的非常量注册表键时,可以使用这些函数。

为了简化表示法,我采用了环境变量扩展的表示法。在这种情况下,我使用`%name%`来表示字符串表中由值name标识的字符串的扩展。因此,`%IDS_PROGRAM_ROOT%`应该在下面的描述中替换为`IDS_PROGRAM_ROOT`所表示的字符串,如果name在程序中定义了一个变量或参数,则替换为由该变量或参数表示的整数检索到的字符串。

在所有情况下,如果函数返回`FALSE`,则可以通过调用`::GetLastError()`找到错误。除了注册表API调用可能返回的标准错误之外,如果值对于操作类型错误或长度错误,`::GetLastErro()`将返回`ERROR_INVALID_DATA`。

如果您使用此头文件,或者如果您使用RegVars.cpp模块,您必须将其包含在您的编译中或链接已编译的RegVars.obj文件。

[获取/设置]RegistryString          

BOOL GetRegistryString(HKEY root, const CString & var, 
                       CString & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

CString & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_SZ`类型)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryString(HKEY root, const CString & var, 
                       const CString & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

const CString & val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_SZ`类型的值。
BOOL GetRegistryString(HKEY root, const CString & path, 
                       UINT var, CString & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\%var%

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

UINT var

定义变量的变量路径,由字符串表条目表示。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

CString & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_SZ`类型)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryString(HKEY root, const CString & path, 
                       UINT var, const CString & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\%var%

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

UINT var

定义变量的变量路径,包含在由整数`var`指定的字符串表条目中。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

const CString & val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_SZ`类型的值。
BOOL GetRegistryString(HKEY root, const CString & path, 
     const CString & var, CString & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\var

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

CString & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_SZ`类型)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryString(HKEY root, const CString & path, 
     const CString & var, const CString & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\var

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

const CString & val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_SZ`类型的值。

[获取/设置]RegistryInt          

BOOL GetRegistryInt(HKEY root, const CString & var, DWORD & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

DWORD & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_DWORD`类型)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryInt(HKEY root, const CString & var, DWORD val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

DWORD val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_DWORD`类型的值。
BOOL GetRegistryInt(HKEY root, const CString & path, 
                    UINT var, DWORD & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\%var%

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

UINT var

定义变量的变量路径,由字符串表条目表示。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

DWORD & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_DWORD`类型)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryInt(HKEY root, const CString & path, 
                    UINT var, DWORD val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\%var%

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

UINT var

定义变量的变量路径,包含在由整数`var`指定的字符串表条目中。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

DWORD val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_DWORD`类型的值。
BOOL GetRegistryInt(HKEY root, const CString & path, 
                    const CString & var, DWORD & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\var

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

DWORD & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_DWORD`类型)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryInt(HKEY root, const CString & path, const CString & var, DWORD val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\path\var

const CString & path

从根目录和程序根目录到值的路径,其中`var`参数指定路径的其余部分。

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

DWORD val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_DWORD`类型的值。

[获取/设置]RegistryInt64          

BOOL GetRegistryInt64(HKEY root, const CString & var, ULONGLONG & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

ULONGLONG & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_BINARY`类型的8字节值)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryInt64(HKEY root, const CString & var, ULONGLONG val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

ULONGLONG val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_BINARY`类型的8字节值。

[获取/设置]RegistryGUID          

BOOL GetRegistryGUID(HKEY root, const CString & var, GUID & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

ULONGLONG & val

如果调用结果为`TRUE`,则注册表的内容(必须是`REG_BINARY`类型的16字节值)将在此变量中找到。如果结果为`FALSE`,则其保持不变。
BOOL SetRegistryGUID(HKEY root, const CString & var, const GUID & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

ULONGLONG val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_BINARY`类型的8字节值。

[获取/设置]RegistryFont          

BOOL GetRegistryFont(HKEY root, const CString & var, LPLOGFONT val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

LPLOGFONT val

此结构将首先完全清零。如果调用结果为`TRUE`,则字体的注册表信息的完整内容(由子键`var`下的值表示)将在此结构中找到。如果结果为`FALSE`,则字段将部分填充。
BOOL SetRegistryFont(HKEY root, const CString & var, const LOGFONT * val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

const LOGFONT * val

如果调用结果为`TRUE`,则此参数的内容将作为一组值存储在子键`var`下。

对于字体,`var`不代表一个值,而是一个存储值的键。`LOGFONT`结构的以下组件被存储。请注意,这不是可能的完整值集。例如,我不需要存储字体旋转信息。

type 含义

<code>lfHeight

REG_DWORD

字体高度

<code>lfWeight

REG_DWORD

字体粗细,FW_符号

<code>lfItalic

REG_WORD

斜体字体为`TRUE`

<code>lfUnderline

REG_DWORD

带下划线字体为`TRUE`

<code>lfStrikeout

REG_DWORD

删除线字体为`TRUE`

<code>lfFaceName

REG_SZ

字体名称

[获取/设置]RegistryWindowPlacement          

BOOL GetRegistryWindowPlacement(HKEY root, 
     const CString & var, WINDOWPLACEMENT * val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

WINDOWPLACEMENT * val

此结构将首先完全清零。如果调用结果为`TRUE`,则`WINDOWPLACEMENT`的注册表信息的完整内容(由子键`var`下的值表示)将在此结构中找到。如果结果为`FALSE`,则字段将部分填充。
BOOL SetRegistryWindowPlacement(HKEY root, const CString & var, 
                                const WINDOWPLACEMENT * val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

const WINDOWPLACEMENT * val

如果调用结果为`TRUE`,则此参数的内容将作为一组值存储在子键`var`下。

对于字体,`var`不代表值,而是一个存储值的键。`LOGFONT`结构的以下组件被存储。请注意,这不是所有可能值的完整集合。例如,我不需要存储字体旋转信息。此信息需要您在下表中定义字符串表键。如果您未定义键`IDS_KEY_PLACEMENT_FLAGS`,则`WINDOWPLACEMENT`函数将不可用。

示例下载中,有一个文件resource.h包含这些符号,以及一个文件test.rc包含字符串表条目。

典型名称 type 含义

IDS_KEY_PLACEMENT_ FLAGS

"WindowPlacement\\ Flags"

REG_DWORD

结构的`flags`值

IDS_KEY_PLACEMENT_ SHOWCMD

"WindowPlacement\\ ShowCmd"

REG_DWORD

还原值,例如,`SW_MINIMIZE`、`SW_MAXIMIZE`或`SW_RESTORE`

IDS_KEY_PLACEMENT_ MINPOSITION_X

"WindowPlacement\\ MinPosition\\x"

REG_WORD

图标位置,左边缘。

IDS_KEY_PLACEMENT_ MINPOSITION_Y

"WindowPlacement\\ MinPosition\\y"

REG_DWORD

图标位置,上边缘

IDS_KEY_PLACEMENT_ MAXPOSITION_X

"WindowPlacement\\ MaxPosition\\x"

REG_DWORD

最大化窗口位置,左边缘

IDS_KEY_PLACEMENT_ MAXPOSITION_Y

"WindowPlacement\\ MaxPosition\\y"

REG_DWORD

最大化窗口位置,上边缘

IDS_KEY_PLACEMENT_ NORMAL_LEFT

"WindowPlacement\\ NormalPosition\\left"

REG_DWORD

规范化窗口位置,左边缘

KEY_PLACEMENT_ NORMAL_TOP

"WindowPlacement\\ NormalPosition\\top"

REG_DWORD

规范化窗口位置,上边缘

KEY_PLACEMENT_ NORMAL_RIGHT

"WindowPlacement\\ NormalPosition\\right"

REG_DWORD

规范化窗口位置,右边缘

KEY_PLACEMENT_ NORMAL_BOTTOM

"WindowPlacement\\ NormalPosition\\bottom"

REG_DWORD

规范化窗口位置,下边缘

[获取/设置]RegistryDWordArray          

CDWordArray * GetRegistryDWordArray(HKEY root, const CString & var);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则调用返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。
<code>return value 如果成功,则返回一个新创建的`CDWordArray`对象。调用此函数的调用者有责任在不再需要此数组时删除它。如果发生错误,返回值为`NULL`。
BOOL SetRegistryDWordArray(HKEY root, const CString & var, CDWordArray & val);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,它将被创建。如果在创建过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

CDWordArray & val

如果调用结果为`TRUE`,则此参数的内容将存储为`REG_BINARY`值。

DeleteRegistry[Key/Value]          

BOOL DeleteRegistryKey(HKEY root, const CString & keyname);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & keyname

定义键的变量路径。如果路径不存在,则调用返回`TRUE`。如果路径存在,则尝试删除它;如果成功删除,则返回值为`TRUE`。如果删除失败,则返回`FALSE`。
BOOL DeleteRegistryValue(HKEY root, const CString & var);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\var

const CString & var

定义变量的变量路径。如果路径不存在,则返回值为`TRUE`。如果路径存在,则变量将被删除。如果在删除过程中发生任何错误,此调用将返回`FALSE`。请注意,此字符串可以包含描述更复杂路径的\字符。

[获取/查找]RegistryKey          

BOOL GetRegistryKey(HKEY root, const CString & keyname, HKEY & key);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\keyname

const CString & keyname

定义父键的变量路径。如果路径不存在,则尝试创建它。如果创建成功,或者路径已存在,则设置`key`值,并且调用返回`TRUE`。如果路径不存在且无法创建,则调用返回`FALSE`。

HKEY & key

表示由当前程序根目录的`keyname`路径定义的键的注册表键句柄。此值仅在函数返回`TRUE`时有效。
BOOL FindRegistryKey(HKEY root, const CString & keyname, HKEY & key);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\keyname

const CString & keyname

定义键的变量路径。如果路径不存在,则返回值为`FALSE`,并且不会尝试创建它。如果路径存在,则打开一个键句柄并在提供的`key`中返回。请注意,此字符串可以包含描述更复杂路径的\字符。

HKEY & key

表示由当前程序根目录的`keyname`路径定义的键的注册表键句柄。此值仅在函数返回`TRUE`时有效。

EnumRegistry[Keys/Values]          

CStringArray * EnumRegistryKeys(HKEY root, const CString & keyname);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\keyname

const CString & keyname

定义父键的变量路径。如果路径不存在,则调用返回`NULL`。如果路径存在,则枚举子键并在生成的`CStringArray`中返回。调用者有责任删除返回的`CStringArray`。
CStringArray * EnumRegistryValues(HKEY root, const CString & keyname);

HKEY root

找到键的根,通常是`HKEY_CURRENT_USER`或`HKEY_LOCAL_MACHINE`。键将被评估为

root\%IDS_PROGRAM_ROOT%\keyname

const CString & keyname

定义父键的变量路径。如果路径不存在,则返回值为`NULL`。如果路径存在,则键下的所有值的名称都将在生成的`CStringArray`中返回。调用者有责任删除返回的`CStringArray`。请注意,此字符串可以包含描述更复杂路径的\字符。

这些文章中表达的观点是作者的观点,不代表,也不被微软认可。

如有关于此网站的问题或意见,请发送邮件至newcomer@flounder.com
版权所有 © 1999CompanyLongName保留所有权利。
www.flounder.com/mvp_tips.htm
© . All rights reserved.