Каковы преимущества реестра в Windows?

Каковы преимущества реестра в Windows?

Windows во многом полагается на реестр для хранения небольших фрагментов информации, таких как IP-адрес машины. Unix, а также Linux и OS-X хранят все в обычных файлах.

Что касается реестра, то я вижу несколько проблем:

  • Получить доступ к информации не так-то просто. Например, если машина не загружается, и я пытаюсь решить проблему, смонтировав диск на другой машине, чтобы получить к нему доступ из другой ОС (будь то другая Windows или Linux), я могу легко получить доступ ко всем файлам (за исключением разрешений и шифрования), но что касается реестра, то, хотя его теоретически можно прочитать (и, вероятно, изменить), для этого требуются дополнительные приложения.

  • Доступ через командную строку (в ситуации, когда машина больше не загружается) невозможен (если только для этого не предусмотрены приложения, но я почти уверен, что установка и использование таких приложений гораздо сложнее, чем простой доступ к файлам на диске).

  • Информация может храниться либо в файлах, либо в реестре, поэтому приходится совмещать два места.

  • Обычные инструменты, которые используются при работе с файлами (например findstr, , младший брат Windows grep), отсутствуют при работе с разделами реестра.

Я уверен, что если 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

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