RegOpenUserClassesRoot 函数 (winreg.h)
检索指定用户的 HKEY_CLASSES_ROOT 键的句柄。 用户由访问令牌标识。 返回的键具有注册表视图,该视图将 HKEY_LOCAL_MACHINE\Software\Classes 键的内容与用户注册表配置单元中的 Software\Classes 键的内容合并。 有关详细信息,请参阅 HKEY_CLASSES_ROOT 密钥。
语法
LSTATUS RegOpenUserClassesRoot(
[in] HANDLE hToken,
DWORD dwOptions,
[in] REGSAM samDesired,
[out] PHKEY phkResult
);
参数
[in] hToken
主访问令牌或模拟访问令牌的句柄,用于标识感兴趣的用户。 这可以是调用 LogonUser、 CreateRestrictedToken、 DuplicateToken、 DuplicateTokenEx、 OpenProcessToken 或 OpenThreadToken 函数返回的令牌句柄。
句柄必须具有TOKEN_QUERY访问权限。 有关详细信息,请参阅 Access-Token 对象的访问权限。
dwOptions
此参数是保留的,必须为零。
[in] samDesired
一个掩码,指定对密钥的所需访问权限。 如果密钥的安全描述符不允许对调用进程进行请求的访问,则函数将失败。 有关详细信息,请参阅 注册表项安全和访问权限。
[out] phkResult
一个变量的指针,此变量指向已打开键的句柄。 如果不再需要返回的句柄,请调用 RegCloseKey 函数将其关闭。
返回值
如果函数成功,则返回值为 ERROR_SUCCESS。
如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。 可以将 FormatMessage 函数与 FORMAT_MESSAGE_FROM_SYSTEM 标志一起使用,以获取错误的泛型说明。
注解
使用 RegOpenUserClassesRoot 函数,可以检索交互式用户以外的用户的合并HKEY_CLASSES_ROOT信息。 例如,客户端/服务器应用程序的服务器组件可以使用 RegOpenUserClassesRoot 检索客户端的合并信息。
如果未加载指定用户的用户配置文件,RegOpenUserClassesRoot 将失败。 当用户以交互方式登录时,系统会自动加载用户的配置文件。 对于其他用户,可以调用 LoadUserProfile 函数来加载用户的配置文件。 但是, LoadUserProfile 可能非常耗时,因此请勿出于此目的调用它,除非绝对需要用户的合并 HKEY_CLASSES_ROOT 信息。
在以交互方式登录的用户的安全上下文中运行的应用程序不需要使用 RegOpenUserClassesRoot。 这些应用程序可以调用 RegOpenKeyEx 函数,为交互式用户检索 HKEY_CLASSES_ROOT 密钥的合并视图。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winreg.h (包括 Windows.h) |
Library | Advapi32.lib |
DLL | Advapi32.dll |