首页 文章

将Windows注册表项路径转换为字符串?

提问于
浏览
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的 table ,而且他们不太可能改变,但这是一种粗鲁的做法 .

2 回答

  • 3

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

    对反向(HKEY名称)的需求不多,因此注册表可能仅在共同方向(名称为HKEY)中编入索引 .

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

  • 2

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

相关问题