Sysinternals Procmon 日志中的路径“\REGISTRY\A\...”是什么意思?

Sysinternals Procmon 日志中的路径“\REGISTRY\A\...”是什么意思?

我使用 Sysinternals Procmon 实用程序来监视某些程序对注册表的访问。大多数日志条目的 Path 属性以HKCU\…或开头HKLM\…,与注册表配置单元相对应HKEY_CURRENT_USERHKEY_LOCAL_MACHINE可以使用 Regedit 查看。但有些条目的 Path 属性以 开头\REGISTRY\A\…

在此处输入图片描述

您能解释一下它是注册表的哪一部分吗?我可以使用 Regedit 或其他实用程序查看它吗?我可以通过编程访问它吗?

我在跑步Windows 8.1 企业版 x64


更新:我已联系 Procmon 开发人员,他们向我指出了以下涉及此问题的 MSDN 资源:

答案1

它是一个应用程序配置单元,这可以在 volatility by no name 中看到!应用程序配置单元是用户模式应用程序加载的注册表配置单元,用于存储特定于应用程序的状态数据。应用程序调用该RegLoadAppKey函数来加载应用程序配置单元。

更多信息https://msdn.microsoft.com/en-us/library/windows/hardware/jj673019%28v=vs.85%29.aspx

答案2

要编辑私人配置单元,必须事先加载。

对于 Visual Studio,可以这样做:

[为了] 提高 VS 2017 的隔离性和弹性,它现在使用私有注册表配置单元。VS 在内部使用重定向,虽然对于 VS 扩展(即 dll)而言这是透明的,但对于外部进程(即 exe),这会导致它们无法正常工作。

要手动更改私有注册表配置单元中的值,可以使用 regedit.exe 加载私有配置单元。您需要选择 HKEY_USERS 节点,然后单击文件 > 加载配置单元… 菜单。选择 privateregistry.bin 文件,为配置单元命名(我输入的是“VS2017PrivateRegistry”),现在您可以像往常一样看到 15.0_Config 键已填充(注意:完成后使用文件 > 卸载配置单元):

截屏

要以编程方式更改私有注册表配置单元中的值,您需要为 VS 构建扩展,或者如果您想使用外部 exe,则需要使用注册加载应用密钥函数或避免直接使用注册表,而是使用外部设置管理器。请参阅 Visual Studio 2017 扩展性重大变化中的“更改:减少注册表影响”部分。

https://web.archive.org/web/20210506232809/https://social.msdn.microsoft.com/Forums/vstudio/en-US/f636ee47-1eb7-45ed-ae2a-674cbabb8b2c/clear-mru-list-in-visual-studio-2017

在启动使用该配置单元的应用程序之前,请不要忘记在 regedit 中卸载该配置单元。

答案3

Sysinternals Procmon 日志中的路径 '\REGISTRY\A\…' 是什么意思?您能解释一下它是注册表的哪一部分吗?我可以使用 Regedit 或其他实用程序查看它吗?我可以通过编程方式访问它吗?

我无法重现您在我的系统上看到的内容,但我可以告诉您如何在您的系统上找到它。您可以在以下注册表项中看到当前以任何名称安装的所有注册表配置单元的列表(包括系统范围的配置单元、当前登录用户的用户配置单元以及手动或通过软件加载的任何配置单元)。它将显示内部注册表路径和配置单元文件的路径(图 1)。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

您可以使用此命令查看 的特定实例托管哪些服务svchost.exe。我使用了您截屏时它正在使用的 pid (1240);将其替换为当前 PID。

tasklist /svc /fi "pid eq 1240"

图1:注册表编辑器的屏幕截图,其中突出显示了 hivelist 项,显示了已安装的注册表配置单元

注册表编辑器的屏幕截图,其中突出显示了 hivelist 键

答案4

\REGISTRY\A是一个隐藏的注册表配置单元,供Windows 应用商店应用(又名 Metro 风格的应用程序)。

相关内容