Что означает путь \REGISTRY\A\... в журнале Sysinternals Procmon?
Я использую утилиту Sysinternals Procmon для контроля доступа к реестру некоторыми программами. Большинство записей журнала имеют свойство Path, начиная с HKCU\…
или же HKLM\…
, что соответствует реестру ульев HKEY_CURRENT_USER
а также HKEY_LOCAL_MACHINE
это можно увидеть с помощью Regedit. Но у некоторых записей есть Путь, начинающийся с \REGISTRY\A\…
:
Не могли бы вы объяснить, что это за реестр? Могу ли я увидеть это с помощью Regedit или другой утилиты? Могу ли я получить к нему доступ программно?
Я использую Windows 8.1 Enterprise x64.
ОБНОВЛЕНИЕ: Я связался с разработчиками Procmon, и они указали мне на следующие ресурсы MSDN, посвященные этому вопросу:
4 ответа
Это улей приложения, который можно увидеть в волатильности без названия! Ульи приложения - это кусты реестра, загружаемые приложениями пользовательского режима для хранения данных о состоянии приложения. Приложение вызывает функцию RegLoadAppKey для загрузки куста приложения.
больше информации о
http://msdn.microsoft.com/en-us/library/windows/hardware/jj673019%28v=vs.85%29.aspx
Мне нужно ответить на свой вопрос в комментариях.
Чтобы редактировать частный улей, он должен быть загружен раньше.
Для Visual Studio это можно сделать так:
Повышая изоляцию и устойчивость 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 перед тем, как запускать приложение, используя его.
Что означает путь '\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: Снимок экрана редактора реестра с выделенным ключом списка кустов, показывающий подключенные кусты реестра
\REGISTRY\A
скрытый куст реестра, используемый приложениями из Магазина Windows (или приложения в стиле Metro).