注册表和类型库全局函数
这些函数支持加载和注册类型库。
重要
下表中列出的函数不能在 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。
注解
AtlComModuleUnregisterServer 和 CAtlComModule::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::UnRegisterTypeLib 和 AtlComModuleUnregisterServer 使用此帮助程序函数。
要求
标头:atlbase.h
AtlLoadTypeLib
调用此函数可加载类型库。
语法
ATLINLINE ATLAPI AtlLoadTypeLib(
HINSTANCE hInstTypeLib,
LPCOLESTR lpszIndex,
BSTR* pbstrPath,
ITypeLib** ppTypeLib);
参数
hInstTypeLib
与类型库关联的模块的句柄。
lpszIndex
格式为“\\N”的字符串,其中 N 是类型库资源的整数索引。 如果不需要索引,可以为 NULL。
pbstrPath
成功返回时,包含与类型库关联的模块的完整路径。
ppTypeLib
成功返回时,包含指向已加载类型库的指针的指针。
返回值
如果成功,则返回 S_OK;否则返回错误 HRESULT。
备注
AtlRegisterTypeLib 和 AtlUnRegisterTypeLib 使用此帮助程序函数。
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_MAP 和 END_RDX_MAP 宏扩展为调用 RegistryDataExchange
的宏。
指示函数应执行的操作的可能枚举值如下表所示:
枚举值 | 操作 |
---|---|
eReadFromReg | 从注册表读取数据。 |
eWriteToReg | 将数据写入注册表。 |
eDeleteFromReg | 从注册表中删除密钥。 |
要求
标头:atlbase.h