3

我正在编写的直接 WIN32API 程序(没有 MFC,没有 .NET)使用注册表。如果发生注册表错误,我想打印失败的键的完整路径。

HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE 和 HKEY_USERS 是 HKEY (DWORD) 值(HKEY_CLASSES_ROOT 为 0x8000000)等。子键是 LPCTSTR,值名称也是如此。

是否有转换 HKEY、子键和值名称的方法(包括任何重定向 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.85).aspx))到文本字符串?

我意识到我可以自己建立一个 HKEY 的表,而且它们不太可能改变,但这是一种粗鲁的方法。

4

2 回答 2

3

我知道没有这样的 API。唯一为您提供名称的注册表函数是RegEnum...函数,它为您提供相对于打开键的名称。

对反向(HKEY 到名称)的需求不多,因此注册表可能只在共同方向(名称到 HKEY)上建立索引。

在导航层次结构时,您必须自己跟踪名称。

于 2012-10-11T17:10:40.163 回答
3

可能不值得,但您可以使用 ntdll 的NTQueryKey( ZwQueryKey) withKEY_INFORMATION_CLASS.KeyNameInformation将注册表句柄转换为“路径”字符串,尽管您最终会使用格式\REGISTRY\USER而不是HKEY_CURRENT_USER格式。

于 2012-10-12T10:20:15.133 回答