Почему кусты реестра Windows выглядят пустыми?

Почему кусты реестра Windows выглядят пустыми?

Я зашел "C:\Windows\System32\config"на свой компьютер с Windows 10 и попытался открыть файлы куста реестра.

SOFTWAREНапример, , имеет размер ровно 128 МБ, как сообщает Explorer, но при открытии его с помощью Visual Studio Code он отображается как пустой. Блокнот отказывается открывать его, потому что он «используется другим процессом». Я получаю те же результаты для других файлов ( SYSTEM, SECURITY, и т. д.).

Windows пытается помешать мне сделать что-то глупое? Эти файлы в чем-то особенные (помимо размещения реестра)?

решение1

Они кажутся пустыми, потому что Visual Studio Code не понимает концепцию невозможности открыть файл. На самом деле они не пустые, vscode просто буквально не может узнать, являются они пустыми или нет.

В Windows есть концепция «исключительного открытия» (также известная как «режимы совместного использования», в других местах также называемая «обязательной блокировкой»). Она обычно используется программным обеспечением баз данных, чтобы не допустить, чтобы другая программа записывала данные в то же время, когда ядро ​​базы данных управляет ими; если два обработчика попытаются записать данные одновременно, они могут повредить всю базу данных. То же самое относится и к файловым системам — Windows фактически не позволяет вам получить доступ к устройству необработанного диска, если оно смонтировано как файловая система.

(Тем не менее, естьявляютсяформаты баз данных, специально созданные для одновременного доступа, такие как LMDB.)

НоначальныйПричина, по которой реестр Windows использует исключительное открытие, заключается в обеспечении безопасности. Каждый ключ реестра может иметь набор разрешений (DACL/SACL), прикрепленный к нему, как к файлу или папке. Если бы вы могли напрямую открыть куст реестра (особенно системный или куст безопасности), вы могли бы просто прочитать данные, которые должны были быть защищены с помощью разрешений.

Связанный контент