我写的直接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表,但它们不太可能改变,但这是一种粗鲁的做法。
答案 0 :(得分:3)
我不知道这样的API。唯一提供名称的注册表函数是RegEnum...函数,它们为您提供相对于打开密钥的名称。
对反向(HKEY名称)的需求不多,因此注册表可能只在共同方向(名称为HKEY)编入索引。
在导航层次结构时,您必须自己跟踪名称。
答案 1 :(得分:2)
可能不值得,但你可以使用ntdll的NTQueryKey
(ZwQueryKey
)与KEY_INFORMATION_CLASS.KeyNameInformation
将注册表句柄转换为“路径”字符串,尽管你最终会得到{{1而不是\REGISTRY\USER
格式。