![Каковы преимущества реестра в Windows?](https://rvso.com/image/1457491/%D0%9A%D0%B0%D0%BA%D0%BE%D0%B2%D1%8B%20%D0%BF%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0%20%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80%D0%B0%20%D0%B2%20Windows%3F.png)
Windows во многом полагается на реестр для хранения небольших фрагментов информации, таких как IP-адрес машины. Unix, а также Linux и OS-X хранят все в обычных файлах.
Что касается реестра, то я вижу несколько проблем:
Получить доступ к информации не так-то просто. Например, если машина не загружается, и я пытаюсь решить проблему, смонтировав диск на другой машине, чтобы получить к нему доступ из другой ОС (будь то другая Windows или Linux), я могу легко получить доступ ко всем файлам (за исключением разрешений и шифрования), но что касается реестра, то, хотя его теоретически можно прочитать (и, вероятно, изменить), для этого требуются дополнительные приложения.
Доступ через командную строку (в ситуации, когда машина больше не загружается) невозможен (если только для этого не предусмотрены приложения, но я почти уверен, что установка и использование таких приложений гораздо сложнее, чем простой доступ к файлам на диске).
Информация может храниться либо в файлах, либо в реестре, поэтому приходится совмещать два места.
Обычные инструменты, которые используются при работе с файлами (например
findstr
, , младший брат Windowsgrep
), отсутствуют при работе с разделами реестра.
Я уверен, что если Microsoft изначально внедрила реестр, то на то были веские причины, и это давало (пусть и небольшое) конкурентное преимущество Windows перед другими операционными системами того времени.
Я думал об ограничениях производительности и пространства, которые были особенно важны во времена зарождения Windows, но я не вижу, как хранение чего-либо в реестре повышает производительность или сокращает используемое пространство (хранение DWORD как фактического DWORD в реестре по сравнению с хранением его строкового представления в файлах сэкономит место, но имело ли бы это такое уж значение даже в 1985 году?
С точки зрения безопасности, похоже, тоже нет никакой разницы. Я не уверен, было ли это так в 1985 году, но сегодняшние файловые разрешения выглядят такими же — если не более — мощными, как те, что реализованы для ключей реестра.
Организация также схожа: древовидная структура без возможностей индексации/поиска (хотя более поздние версии Windows реализуют индексацию файлов).
Так в чем же заключаются или заключались изначально преимущества реестра по сравнению с хранением всех данных в файлах?
решение1
До того, как Microsoft начала использовать реестр, у них былоINI-файлы(текстовые файлы). Они обнаружили, что очень сложно разработать хорошую платформу, используя только INI-файлы, потому что:
- Поддерживать Unicode непросто.
Это текстовый файл, поэтому разрешения устанавливаются на уровне файла, а не на уровне ключа. Тот, у кого есть доступ к файлу, имеет доступ ко всем его параметрам.
Если два потока одновременно попытаются обновить INI-файл, они могут случайно удалить изменения, внесенные другим потоком.
- Программа может открыть INI-файл в монопольном режиме и заблокировать все остальные.
- Файлы INI содержат только строки. Если вы хотите хранить двоичные данные, вам придется как-то закодировать их в виде строки.
- Анализ INI-файла выполняется медленно.
- Централизованное администрирование INI-файлов затруднено. Поскольку они могут находиться где угодно в системе, сетевой администратор не может писать скрипты для проверки состояния приложений и обновления устаревших.
- Системы стали многопользовательскими, и сохранение контроля над настройками каждого пользователя стало невыносимым. Иногда это означало отдельные INI-файлы для каждого пользователя.
Это основные моменты, которые повлияли на поиски нового решения в Microsot, и они пришли с реестром. Реестр — это база данных, поэтому он решает предыдущие проблемы, но создает новые:
- Это единая точка отказа.
- Он двоичный. В случае поломки его очень сложно починить голыми руками.
- Приложения, сохраняющие свои настройки в реестре, менее переносимы.
- Сложная навигация.
Кредит на значительный источник:http://blogs.msdn.com/b/oldnewthing/archive/2007/11/26/6523907.aspx