Приведите, пожалуйста, пример, как читать файлы реестра напрямую.
т.е. они ведь лежат в каталоге config в Windows, и regedit.exe их как-то читает, только вот как информация в них представленна?
Здравствуйте, Feral, Вы писали:
F>Приведите, пожалуйста, пример, как читать файлы реестра напрямую. F>т.е. они ведь лежат в каталоге config в Windows, и regedit.exe их как-то читает, только вот как информация в них представленна?
Здравствуйте, Feral, Вы писали:
F>Приведите, пожалуйста, пример, как читать файлы реестра напрямую. F>т.е. они ведь лежат в каталоге config в Windows, и regedit.exe их как-то читает, только вот как информация в них представленна? здесь
... << RSDN@Home 1.1.0 stable >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: Файлы реестра Windows
От:
Аноним
Дата:
04.12.03 07:06
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, Feral, Вы писали:
F>>Приведите, пожалуйста, пример, как читать файлы реестра напрямую. F>>т.е. они ведь лежат в каталоге config в Windows, и regedit.exe их как-то читает, только вот как информация в них представленна?
SDB>Гх-м-м... а чем стандартный API не устраивает?
Тем что когда Windows не запущен, а информацию из реестра прочитать надо, ничего не выйдет.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, SchweinDeBurg, Вы писали:
SDB>>Здравствуйте, Feral, Вы писали:
F>>>Приведите, пожалуйста, пример, как читать файлы реестра напрямую. F>>>т.е. они ведь лежат в каталоге config в Windows, и regedit.exe их как-то читает, только вот как информация в них представленна?
SDB>>Гх-м-м... а чем стандартный API не устраивает?
А>Тем что когда Windows не запущен, а информацию из реестра прочитать надо, ничего не выйдет.
Здравствуйте, vasketsov, Вы писали:
V>Здравствуйте, Feral, Вы писали:
F>> и regedit.exe их как-то читает,
V>regedit их не читает. реестр — это не файлы.
Здравствуйте, vasketsov, Вы писали:
F>> и regedit.exe их как-то читает, V>regedit их не читает. реестр — это не файлы.
Реестр состоит из нескольких улей (hives). Где отдельные улья предстовляют собой файлы. Хотя, часть реестра существует только виртуально.
По сути, структура файла улья это заголовок (обычно 4 kb) и набор так называемых bin-ов (блоков, на которые расширяется улей при увеличении объема, их размер кратен 4 кб, размер страницы памяти). Bin-ы объеденены в список, т.е. в заголовке bin-a содержат смещение на следующий bin. Внутри bin-ов содержится набор блоков памяти свободных или занятых, так называемых cells. В каждом cell, в первых 4 байтах содержится размер ячейки, после которого идут данные ячейки. Если размер положительный, ячейка свободна, отрицательный — занята.
Это физическая структура. С точки зрения логики, ячейки содержат ключи (key nodes) и значения (key values).
Ключи содержат в себе, количество подключей, и смещение на хэш таблицу подключей (которая состоит из набора хэш записей. Каждая запись это хэш по имени подключа и смещение на данные самого ключа), количество значений и смещение на хэш таблицу значений ключа (аналогично хэш таблице ключей, только для значений), смещение на ключ родитель, длину имени и имя ключа, плюс дескриптор прав доступа. Структура значения содержит тип (DWORD, BINARY, STRING и т.п.), смещение на данные значения, длину имени и имя значения. Заголовок hive'a содержит смещение на корневой ключ. Все смещения отсчитываются от первого bin'a.
В общем, проще всего посмотреть исходиники редакторов реестра, в которых описаны структуры всего вышеперечисленного здесь и здесь,а также статью Марка Русиновича про реестр NT здесь
Здравствуйте, zz-sergant, Вы писали:
ZS>Реестр состоит из нескольких улей (hives).
Это он только виден так.
ZS>Где отдельные улья предстовляют собой файлы.
Нет. HKCU — не отдельный файл, а только ссылка. HKCR — тоже.
HKPD и прочая ерунда про производительность — вообще просто "реестроподобное API", исключительно для возможности удаленного доступа.
Итак, есть файлы, которые не становятся корневыми разделами реестра, но загружаются в реестр (HKLM\Software). Есть корневые разделы, не являющиеся файлами (примеры я привел).
Собственно, "отдельные улья представляют собой файлы" — для NT это верно разве что для HKU.
Все это можно увидеть в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist.
ZS>Хотя, часть реестра существует только виртуально.
Точнее, часть данных реестра строится при загрузке, так как бессмысленно ее хранить постоянно, либо это связано с техническим решением поддержки нескольких версий настроек/оборудования (Last known good и все такое прочее).
Чтение файлов реестра не может в общем случае быть равносильно чтению реестра даже в том плане, что увидишь в реестре, так как можно загрузить в реестр в качестве hive принесенный с работы файл ...
Здравствуйте, vasketsov, Вы писали:
ZS>>Где отдельные улья предстовляют собой файлы. V>Нет. HKCU — не отдельный файл, а только ссылка. HKCR — тоже. V>HKPD и прочая ерунда про производительность — вообще просто "реестроподобное API", исключительно для возможности удаленного доступа. V>Итак, есть файлы, которые не становятся корневыми разделами реестра, но загружаются в реестр (HKLM\Software). Есть корневые разделы, не являющиеся файлами (примеры я привел). V>Собственно, "отдельные улья представляют собой файлы" — для NT это верно разве что для HKU. V>Все это можно увидеть в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist.
Это все так. Просто нет необходимости объяснять все тонкости организации реестра в одном сообщении.
Я просто дал информацию для затравки и ссылку на статью, которая поясняет это в деталях
ZS>Это все так. Просто нет необходимости объяснять все тонкости организации реестра в одном сообщении. ZS>Я просто дал информацию для затравки и ссылку на статью, которая поясняет это в деталях
уже вот здесь
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[5]: Файлы реестра Windows
От:
Аноним
Дата:
08.12.03 06:21
Оценка:
Здравствуйте, fiatik, Вы писали:
F>Здравствуйте, vasketsov, Вы писали:
V>>Глупости, это. Одно только, что не все в реестре берется из файлов, уже свидетельствует, что спорить тут нечего.
F>хм F>а что, реестр что-то из биоса получает? F>или ты имеешь в виду, что не все ульи лежат в специальных файлах? F> не ради спора, просто любопытно
А то что некоторые кусты реестра строятся при загрузке и находятся в памяти, и даже скажу больше в неподкачеваемой памяти .