注册表和类型库全局函数

这些函数支持加载和注册类型库。

重要

下表中列出的函数不能在 Windows 运行时执行的应用程序中使用。

名称 描述
AfxRegCreateKey 创建指定的注册表项。
AfxRegDeleteKey 删除指定的注册表项。
AfxRegisterPreviewHandler 用于注册预览处理程序的帮助程序。
AfxUnregisterPreviewHandler 用于注销预览处理程序的帮助程序。
AtlRegisterTypeLib 调用此函数可注册类型库。
AtlUnRegisterTypeLib 调用此函数可注销类型库
AfxRegOpenKey 打开指定的注册表项。
AfxRegOpenKeyEx 打开指定的注册表项。
AtlLoadTypeLib 调用此函数可加载类型库。
AtlUpdateRegistryFromResourceD 调用此函数可从提供的资源中更新注册表。
RegistryDataExchange 调用此函数可在系统注册表中进行读取或写入。 由注册表数据交换宏调用。

这些函数控制程序使用注册表中的哪个节点来存储信息。

名称 描述
AtlGetPerUserRegistration 检索应用程序是否将注册表访问重定向到 HKEY_CURRENT_USER (HKCU) 节点。
AtlSetPerUserRegistration 设置应用程序是否将注册表访问重定向到 HKEY_CURRENT_USER (HKCU) 节点。

要求

标头:atlbase.h

AtlGetPerUserRegistration

使用此函数可确定应用程序是否将注册表访问重定向到 HKEY_CURRENT_USER (HKCU) 节点。

语法

ATLINLINE ATLAPI AtlGetPerUserRegistration(bool* pEnabled);

参数

pEnabled
[out] TRUE 指示注册表信息将定向至 HKCU 节点;FALSE 指示应用程序会将注册表信息写入默认节点。 默认节点为 HKEY_CLASSES_ROOT (HKCR)。

返回值

如果方法成功,则为 S_OK,如果发生错误,则返回 HRESULT 错误代码。

备注

默认情况下不启用注册表重定向。 如果启用此选项,注册表访问将重定向到 HKEY_CURRENT_USER\Software\Classes。

重定向不是全局性的。 只有 MFC 和 ATL 框架受此注册表重定向的影响。

要求

标头:atlbase.h

AfxRegCreateKey

创建指定的注册表项。

语法

LONG AFXAPI AfxRegCreateKey(HKEY hKey, LPCTSTR lpSubKey, PHKEY phkResult, CAtlTransactionManager* pTM = NULL);

参数

hKey
打开的注册表项的句柄。

lpSubKey
此函数打开或创建的密钥的名称。

phkResult
一个变量的指针,此变量指向已打开或已创建的项的句柄。

pTM
指向 CAtlTransactionManager 对象的指针。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。 如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。

要求

标头: afxpriv.h

AfxRegDeleteKey

删除指定的注册表项。

语法

LONG AFXAPI AfxRegDeleteKey(HKEY hKey, LPCTSTR lpSubKey, CAtlTransactionManager* pTM = NULL);

参数

hKey
打开的注册表项的句柄。

lpSubKey
要删除的文件的名称。

pTM
指向 CAtlTransactionManager 对象的指针。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。 如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。

要求

标头: afxpriv.h

用于注册预览处理程序的帮助程序。

语法

BOOL AFXAPI AfxRegisterPreviewHandler(LPCTSTR lpszCLSID, LPCTSTR lpszShortTypeName, LPCTSTR lpszFilterExt);

参数

lpszCLSID
指定处理程序的 CLSID。

lpszShortTypeName
指定处理程序的 ProgID。

lpszFilterExt
指定注册到此处理程序的文件扩展名。

要求

标头:afxdisp.h

AtlRegisterTypeLib

调用此函数可注册类型库。

ATLAPI AtlRegisterTypeLib(HINSTANCE hInstTypeLib, LPCOLESTR lpszIndex);

参数

hInstTypeLib
模块实例的句柄。

lpszIndex
格式为“\\N”的字符串,其中 N 是类型库资源的整数索引。 如果不需要索引,可以为 NULL。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

AtlComModuleUnregisterServerCAtlComModule::RegisterTypeLib 使用此帮助程序函数。

要求

标头:atlbase.h

AfxRegOpenKey

打开指定的注册表项。

语法

LONG AFXAPI AfxRegOpenKey(HKEY hKey, LPCTSTR lpSubKey, PHKEY phkResult, CAtlTransactionManager* pTM = NULL);

参数

hKey
打开的注册表项的句柄。

lpSubKey
此函数打开或创建的密钥的名称。

phkResult
一个变量的指针,此变量指向已创建键的句柄。

pTM
指向 CAtlTransactionManager 对象的指针。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。 如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。

要求

标头: afxpriv.h

AfxRegOpenKeyEx

打开指定的注册表项。

语法

LONG AFXAPI AfxRegOpenKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult, CAtlTransactionManager* pTM = NULL);

参数

hKey
打开的注册表项的句柄。

lpSubKey
此函数打开或创建的密钥的名称。

ulOptions
此参数是保留的,必须为零。

samDesired
一个掩码,指定对密钥的所需访问权限。

phkResult
一个变量的指针,此变量指向已打开键的句柄。

pTM
指向 CAtlTransactionManager 对象的指针。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。 如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。

要求

标头: afxpriv.h

AfxUnregisterPreviewHandler

用于注销预览处理程序的帮助程序。

语法

BOOL AFXAPI AfxUnRegisterPreviewHandler(LPCTSTR lpszCLSID);

参数

lpszCLSID
指定要注销的处理程序的 CLSID。

要求

标头:afxdisp.h

AtlSetPerUserRegistration

设置应用程序是否将注册表访问重定向到 HKEY_CURRENT_USER (HKCU) 节点。

语法

ATLINLINE ATLAPI AtlSetPerUserRegistration(bool bEnable);

参数

bEnable
[in] TRUE 指示注册表信息将定向至 HKCU 节点;FALSE 指示应用程序会将注册表信息写入默认节点。 默认节点为 HKEY_CLASSES_ROOT (HKCR)。

返回值

如果方法成功,则为 S_OK,如果发生错误,则返回 HRESULT 错误代码。

备注

默认情况下不启用注册表重定向。 如果启用此选项,注册表访问将重定向到 HKEY_CURRENT_USER\Software\Classes。

重定向不是全局性的。 只有 MFC 和 ATL 框架受此注册表重定向的影响。

要求

标头:atlbase.h

AtlUnRegisterTypeLib

调用此函数可注销类型库。

语法

ATLAPI AtlUnRegisterTypeLib(
    HINSTANCE hInstTypeLib,
    LPCOLESTR lpszIndex);

参数

hInstTypeLib
模块实例的句柄。

lpszIndex
格式为“\\N”的字符串,其中 N 是类型库资源的整数索引。 如果不需要索引,可以为 NULL。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

备注

CAtlComModule::UnRegisterTypeLibAtlComModuleUnregisterServer 使用此帮助程序函数。

要求

标头:atlbase.h

AtlLoadTypeLib

调用此函数可加载类型库。

语法

ATLINLINE ATLAPI AtlLoadTypeLib(
    HINSTANCE hInstTypeLib,
    LPCOLESTR lpszIndex,
    BSTR* pbstrPath,
    ITypeLib** ppTypeLib);

参数

hInstTypeLib
与类型库关联的模块的句柄。

lpszIndex
格式为“\\N”的字符串,其中 N 是类型库资源的整数索引。 如果不需要索引,可以为 NULL。

pbstrPath
成功返回时,包含与类型库关联的模块的完整路径。

ppTypeLib
成功返回时,包含指向已加载类型库的指针的指针。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

备注

AtlRegisterTypeLibAtlUnRegisterTypeLib 使用此帮助程序函数。

AtlUpdateRegistryFromResourceD

此函数已在 Visual Studio 2013 中弃用,并已从 Visual Studio 2015 中删除。

<removed>

RegistryDataExchange

调用此函数可在系统注册表中进行读取或写入。

语法

HRESULT RegistryDataExchange(
    T* pT,
    enum RDXOperations rdxOp,
    void* pItem = NULL);

参数

pT
当前对象的指针。

rdxOp
一个枚举值,指示函数应执行的操作。 有关允许的值,请参见“备注”部分中的表格。

pItem
指向要在注册表中读写的数据的指针。 数据还可以表示要从注册表中删除的键。 默认值为 NULL。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

BEGIN_RDX_MAPEND_RDX_MAP 宏扩展为调用 RegistryDataExchange 的宏。

指示函数应执行的操作的可能枚举值如下表所示:

枚举值 操作
eReadFromReg 从注册表读取数据。
eWriteToReg 将数据写入注册表。
eDeleteFromReg 从注册表中删除密钥。

要求

标头:atlbase.h

另请参阅

函数
注册表数据交换宏