20

Я использую утилиту Sysinternals Procmon для контроля доступа к реестру некоторыми программами. Большинство записей журнала имеют свойство Path, начинающееся с HKCU\… или HKLM\… , что соответствует кустам реестра HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE которые можно увидеть с помощью Regedit. Но у некоторых записей есть Путь, начинающийся с \REGISTRY\A\…:

Не могли бы вы объяснить, что это за реестр? Могу ли я увидеть это с помощью Regedit или другой утилиты? Могу ли я получить к нему доступ программно?

Я использую Windows 8.1 Enterprise x64.


ОБНОВЛЕНИЕ: я связался с разработчиками Procmon, и они указали мне на следующие ресурсы MSDN, посвященные этому вопросу:

4 ответа4

6

Это улей приложения, который можно увидеть в волатильности без названия! Ульи приложения - это кусты реестра, загружаемые приложениями пользовательского режима для хранения данных о состоянии приложения. Приложение вызывает функцию RegLoadAppKey для загрузки куста приложения.

больше информации о

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

5

\REGISTRY\A - это скрытый куст реестра, который используется приложениями Магазина Windows (или приложения в стиле Metro).

4

Что означает путь '\REGISTRY\A\…' в журнале Sysinternals Procmon? Не могли бы вы объяснить, что это за реестр? Могу ли я увидеть это с помощью Regedit или другой утилиты? Могу ли я получить к нему доступ программно?

Я не могу воспроизвести то, что вы видите в моей системе, но я могу рассказать вам, как вы можете узнать, что у вас есть. Вы можете увидеть список всех кустов реестра, которые в настоящее время смонтированы под любым именем (включая кусты всей системы, кусты пользователей для пользователей, которые в данный момент вошли в систему, и любые кусты, загруженные вручную или с помощью программного обеспечения) в следующем разделе реестра. Он покажет как внутренний путь реестра, так и путь к файлу куста (рисунок 1).

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist

Вы можете использовать эту команду, чтобы увидеть, какие службы размещаются на конкретном экземпляре svchost.exe . Я использовал pid (1240), который он использовал во время скриншота; замените его текущим PID.

tasklist /svc /fi "pid eq 1240"

Рисунок 1: Снимок экрана редактора реестра с выделенным ключом списка кустов, показывающий подключенные кусты реестра

Снимок экрана редактора реестра с выделенным ключом hivelist

2

Мне нужно ответить на свой вопрос в комментариях.

Чтобы редактировать частный улей, он должен быть загружен раньше.

Для 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) это прозрачно, для внешних процессов (которые являются exes) это заставляет их не работать.

Чтобы вручную изменить значения в кусте частного реестра, вы можете использовать regedit.exe для загрузки частного куста. Вам нужно выбрать узел HKEY_USERS и нажать меню «Файл»> «Загрузить куст ...». Вы выбираете файл privateregistry.bin, присваиваете имя кусту (я ввел «VS2017PrivateRegistry»), и теперь вы видите, что ключ 15.0_Config заполняется как обычно (примечание: используйте File> Unload Hive, когда закончите):

Скриншот

Чтобы программно изменить значения в кусте частного реестра, вам нужно либо создать расширение для VS, либо, если вы хотите использовать внешний exe-файл, вам нужно использовать функцию RegLoadAppKey или избегать прямого использования реестра и использования диспетчера внешних настроек. См. Раздел «Изменение: уменьшение влияния реестра» в разделе «Преодоление изменений в расширяемости Visual Studio 2017».

Не забудьте выгрузить улей в regedit, прежде чем запускать приложение с его помощью.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .