RegLoadAppKeyA 函数 (winreg.h)
将指定的注册表配置单元作为应用程序配置单元加载。
语法
LSTATUS RegLoadAppKeyA(
[in] LPCSTR lpFile,
[out] PHKEY phkResult,
[in] REGSAM samDesired,
[in] DWORD dwOptions,
DWORD Reserved
);
参数
[in] lpFile
hive 文件的名称。 必须使用 RegSaveKey 或 RegSaveKeyEx 函数创建此 hive。 如果该文件不存在,则会使用指定的名称创建空 Hive 文件。
[out] phkResult
指向已加载 Hive 根键的句柄的指针。
访问配置单元中的密钥的唯一方法是通过此句柄。 注册表将阻止应用程序使用密钥的绝对路径访问此配置单元中的密钥。 因此,无法通过注册表的命名空间导航到此配置单元。
[in] samDesired
一个掩码,指定为返回的根密钥请求的访问权限。 有关详细信息,请参阅 注册表项安全和访问权限。
[in] dwOptions
如果此参数REG_PROCESS_APPKEY,则调用方加载 hive 时无法再次加载 hive。 这会阻止其他调用方访问此注册表配置单元。
Reserved
此参数保留。
返回值
如果函数成功,则返回值ERROR_SUCCESS。
如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。 可以将 FormatMessage 函数与FORMAT_MESSAGE_FROM_SYSTEM标志一起使用,以获取错误的泛型说明。
言论
与 RegLoadKey不同,RegLoadAppKey 不会在HKEY_LOCAL_MACHINE或HKEY_USERS下加载 hive。 而是将配置单元加载到无法枚举的特殊根下。 因此,无法枚举当前由 RegLoadAppKey加载的 hives。 RegLoadAppKey 加载的 hives 的所有操作都必须相对于在 phkResult 中返回的句柄执行。
如果需要两个进程对同一 hive 执行操作,则每个进程必须调用 RegLoadAppKey 才能检索句柄。 在 RegLoadAppKey 操作期间,注册表将验证文件是否已加载。 如果已加载,注册表将返回以前加载的 hive 的句柄,而不是重新加载 hive。
配置单元中的所有密钥必须具有相同的安全描述符,否则函数将失败。 此安全描述符必须授予调用方 samDesired 参数指定的访问权限,否则该函数将失败。 不能对 hive 中的任何键使用 RegSetKeySecurity 函数。
在 Windows 8 及更高版本中,每个进程都可以调用 RegLoadAppKey 来加载多个 hives。 在 Windows 7 及更早版本中,每个进程一次只能使用 RegLoadAppKey 加载一个 hive。
使用 RegLoadAppKey 加载的任何 hive 都会使用 RegCloseKey关闭配置单元内密钥的所有句柄时自动卸载。
若要编译使用此函数的应用程序,请将_WIN32_WINNT定义为0x0600或更高版本。 有关详细信息,请参阅 使用 Windows 标头。
注意
winreg.h 标头将 RegLoadAppKey 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista [仅限桌面应用] |
支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winreg.h (包括 Windows.h) |
库 | Advapi32.lib |
DLL | Advapi32.dll |