7

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

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

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

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

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

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

Я уверен, что если Microsoft изначально внедрила реестр, это было бы не зря и дало (даже незначительное) конкурентное преимущество Windows перед другими операционными системами того времени.

Я думал об ограничениях производительности и пространства, особенно важных во времена зарождения Windows, но я не вижу, как хранение чего-либо в реестре повышает производительность или уменьшает используемое пространство (хранение DWORD как фактического DWORD в реестре по сравнению с хранением его строкового представления в файлы сэкономят место, но будет ли это так важно даже в 1985 году?

С точки зрения безопасности, похоже, что разницы тоже нет. Я не уверен, было ли это в 1985 году, но сегодняшние разрешения на основе файлов выглядят - если не более - мощными, чем те, которые реализованы для ключей реестра.

Организация аналогична: древовидная структура, без возможности индексации / поиска (в то время как более поздние версии Windows реализуют индексацию по файлам).

Так каковы или были преимущества реестра по сравнению с хранением всего в файлах?

1 ответ1

7

До того, как Microsoft начала использовать реестр, у них были INI-файлы (текстовые файлы). Им было очень трудно разработать хорошую платформу, используя только файлы INI, потому что:

  • Нелегко поддерживать Юникод.
  • Это текстовый файл, поэтому права доступа устанавливаются на уровне файла, а не на уровне ключа. Тот, кто имеет доступ к файлу, имеет доступ ко всем параметрам в нем.

  • Если два потока пытаются обновить файл INI одновременно, они могут случайно удалить изменения, сделанные другим.

  • Программа может открыть INI-файл в монопольном режиме и заблокировать всех остальных.
  • INI-файлы содержат только строки. Если вы хотите хранить двоичные данные, вы должны как-то кодировать их в виде строки.
  • Разбор файла INI идет медленно.
  • Центральное администрирование файлов INI затруднено. Поскольку они могут находиться в любом месте системы, администратор сети не может писать сценарии для проверки состояния приложения и обновления устаревших.
  • Системы стали многопользовательскими, и контроль над настройками каждого пользователя стал подавляющим. Это означало иногда отдельные файлы INI для каждого пользователя.

Это основные моменты, которые побудили Microsot искать новое решение, и они пришли с реестром. Реестр является базой данных, поэтому он решает предыдущие проблемы, но создает новые:

  • Это единственная точка отказа.
  • Это бинарный. В случае повреждения очень сложно отремонтировать его голыми руками.
  • Приложения, которые помещают свои настройки в реестр, менее переносимы.
  • Комплексная навигация.

Кредит на значительный источник: http://blogs.msdn.com/b/oldnewthing/archive/2007/11/26/6523907.aspx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .