это больше вопрос архитектуры ОС, чем программирование напрямую, но все же. Почему реестр Windows был создан как полностью отдельная подсистема для хранения настроек системы/приложения? В * nix OS'es есть каталог /etc, который совершенно понятен, поскольку файловая система является естественным иерархическим способом хранения настроек, в то время как Microsoft решила создать полностью внешнюю иерархическую подсистему, которая, кажется, является глупой инвестицией, почему они просто используют иерархию файловой системы?
Почему существует реестр Windows?
Ответ 1
- Централизованный - который полезен для роуминга профили.
- Транзакция - что усложняет конфигурации.
- Безопасность. Вы можете обеспечить чтение/запись с большей детализацией, чем файл (за ключ/значение).
Ответ 2
В этой статье обсуждаются файлы INI и реестр: http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx
Ответ 3
Итак, когда двоичный реестр поврежден, вы просто сдадитесь и купите новейшую версию Windows для новой установки.
Ответ 4
Кроме того, степень детализации файловой системы: один кластер для каждого значения немного, поэтому вам нужно сделать компромисс, где заканчивается файловая система и начинается файл настроек. Это, конечно, не дает вам согласованного API. Итак, почему бы не вывести все настройки в несколько ключевых файлов и предоставить вам совместимый API для доступа к нему? BAM - реестр.
(И так как MS обычно рассматривает API более важный формат, не удивительно, что файлы непрозрачны)
[Raymond Chen voice] Помните, что он был разработан для компьютеров, где было достаточно 4 МБ ОЗУ. [/Raymond Chen voice]
Ответ 5
- Каждое приложение не нуждается в повторном создании формата файла конфигурации
- Вы можете легко использовать реестр в коде режима ядра
Как упоминалось в статье Old New Thing, приведенной Бастиеном:
- Система может обрабатывать проблемы concurrency для вас
- Вы можете использовать ключи реестра ACL
Я бы также упомянул, что многие * nix-фреймы заново изобрели реестр... Как gconfd на GNOME.
Ответ 6
Идея состоит в том, чтобы иметь все настройки для всех программ, хранящихся в одном месте, а не для их распространения по всему вашему диску.
Ответ 7
Они сделали это, я полагаю, для поддержки отдельной настройки для каждого пользователя входа. В Unix существует концепция домашнего каталога, а в Windows - нет.
Ответ 8
Во-первых, он быстрее читает и записывает в реестр во время сеанса пользователя.
Ответ 9
Он создал единую точку для всего элемента управления конфигурацией системного приложения. Это было бы неплохим вариантом для встроенной сетевой базы данных (например, Raima, используемой Rational) или текстовой базы данных (Bernstein cdb).