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

Vla*_*kov 24 windows-registry regedit sysinternals procmon

我使用 Sysinternals Procmon 实用程序来监视某些程序对注册表的访问。大多数日志条目都有从HKCU\…或开始的 Path 属性HKLM\…,它对应于注册表配置单元HKEY_CURRENT_USER并且HKEY_LOCAL_MACHINE可以使用 Regedit 看到。但有些条目的路径从\REGISTRY\A\…

在此处输入图片说明

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

我正在运行Windows 8.1 Enterprise x64


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

小智 10

就是application hive,在没有名字的波动中可以看到!应用程序配置单元是由用户模式应用程序加载的注册表配置单元,用于存储特定于应用程序的状态数据。应用程序调用 RegLoadAppKey 函数来加载应用程序配置单元。

更多信息

http://msdn.microsoft.com/en-us/library/windows/hardware/jj673019%28v=vs.85%29.aspx


Syn*_*ech 6

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

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist
Run Code Online (Sandbox Code Playgroud)

您可以使用此命令查看svchost.exe. 我使用了截屏时使用的 pid (1240);将其替换为当前的 PID。

tasklist /svc /fi "pid eq 1240"
Run Code Online (Sandbox Code Playgroud)

图 1:突出显示配置单元列表键的注册表编辑器屏幕截图,显示已安装的注册表配置单元

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

  • `\REGISTRY\A` 未列在 `hivelist` 键中。来自@abs2run 的 [answer](http://superuser.com/a/805662/33682) 通常是正确的答案。 (2认同)

Pio*_*lin 6

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

  • 一些问题: • [这个问题](http://stackoverflow.com/questions/4611291) 有问题的注册表配置单元,但在*Windows 7* 上,所以它看起来不像是连接的Windows 应用程序。• 即使您是对的,Windows 应用程序究竟是如何使用它的?也就是说,它提供了常规登记处没有提供的什么?• 您链接到的维基百科页面根本没有提及注册表,因此我们无法确认您所说的内容或了解它。 (2认同)

Max*_*xim 6

我需要在评论中回答我自己的问题。

要编辑私有配置单元,应该先加载它。

对于 Visual Studio,可以这样制作:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/f636ee47-1eb7-45ed-ae2a-674cbabb8b2c/clear-mru-list-in-visual-studio-2017?forum=visualstudiogeneral

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

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

截屏

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

在开始使用它的应用程序之前,不要忘记在 regedit 中卸载 hive。