如何获取句柄并枚举注册表路径:“\REGISTRY\A\”?

Posted

技术标签:

【中文标题】如何获取句柄并枚举注册表路径:“\\REGISTRY\\A\\”?【英文标题】:How to get an handle and enumerate Registry path : "\REGISTRY\A\"?如何获取句柄并枚举注册表路径:“\REGISTRY\A\”? 【发布时间】:2017-12-29 15:21:38 【问题描述】:

我正在尝试获取注册表配置单元“\REGISTRY\AGUID”的句柄并枚举该句柄下的键。我一直在寻找几个小时,但仍然不知道如何打开或枚举它。请帮助我找到正确的 API 来执行此操作。顺便说一句,RegOpenKeyEx() 和 RegEnumKeyEx() 不起作用,我试过了。

【问题讨论】:

欢迎来到 Stack Overflow!请在阅读How to Ask a Question后编辑您的问题。 ***.com/questions/4611291/… 这在 win8.1 上工作,但在 win10 上,当我们尝试打开“\REGISTRY\A\”时,我们被拒绝访问 @drescherjm 该线程是我的出发点。没有关于如何访问“\REGISTRY\A\”的明确信息。顺便说一句,我是 C++ 新手。 @eryksun 感谢您的回复。我使用内核调试器访问它没有问题,但我想以编程方式访问它 【参考方案1】:

具有“\REGISTRY\A\GUID”路径句柄的应用程序调用了RegLoadAppKeyNtLoadKeyExRegLoadAppKey 在自动生成的路径“\REGISTRY\A\GUID”处加载私有应用程序配置单元。它返回 hive 根 Key 的句柄,并且可以相对于该句柄枚举、创建和打开子键。

过去可以打开相对于“\REGISTRY”句柄的“A”并枚举其子项。这在 Windows 10 中不再允许。我假设在 Configuration Manager 的 Key 对象解析过程中限制访问,CmpParseKey。但是,您仍然可以使用内核调试器使用诸如!reg q \REGISTRY\A 之类的命令来检查此密钥。

【讨论】:

以上是关于如何获取句柄并枚举注册表路径:“\REGISTRY\A\”?的主要内容,如果未能解决你的问题,请参考以下文章

golang 无法枚举注册表项的子项

delphi 知道路径和进程如何获取窗口句柄?

如何从注册表里找到文件位置

用Windows Native API枚举所有句柄及查找文件句柄对应文件名的方法

我如何获得注册密钥的真实路径?

神秘的本机“A”注册表项,路径为:Registry\A