将Windowsregistry项path转换为string?

我写的直接WIN32API程序(没有MFC,没有.NET)使用registry。 如果发生registry错误,我想打印失败的密钥的完整path。

HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE和HKEY_USERS是HKEY(DWORD)值(HKEY_CLASSES_ROOT 0x8000000)等。子是一个LPCTSTR,值的名称。

是否有方法来转换HKEY,子项和值名称(包括任何redirect(http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.85).aspx))到一个文本string?

我意识到我可以自己创build一张HKEY的桌子,他们不太可能改变,但这是一个非常糟糕的方式来做到这一点。

    没有我知道的这样的API。 给你名字的唯一注册表函数是RegEnum …函数,它们给你相对于一个打开的键的名字。

    没有太多的需求反向(HKEY名称),所以注册表可能只是在公共方向(名称为HKEY)索引。

    在您浏览层次结构时,您将不得不跟踪名称。

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