Извините за то, что я действительно незнаю, я просто хочу узнать, зачем нужен реестр для программ? Зачем это и почему нельзя просто записывать переменные в свои локальные файлы? Делает ли он что-то, о чем я не знаю?
Какой смысл в системном реестре?
Ответ 1
ИМХО, реестр Windows - это изобретение, почти столь же практичное и полезное, как и скала для домашних животных.
-
Поставив данные конфигурации приложения в одно и то же место с данными конфигурации операционной системы, любая попытка обновления приложения нести опасность завинчивания операционной системы. Это похоже на создание единого пульта дистанционного управления, который управляет вашим телевизором и вашим кардиостимулятором. Конечно, можно утверждать, что удобно иметь все элементы управления в одном месте, но это также создает опасность того, что любая попытка изменить канал убьет вас.
-
Старые файлы INI были легко прочитаны и обновлены как компьютерами, так и людьми. Для действительно ленивого программиста, который не мог понять, как манипулировать простым текстовым файлом, есть функции библиотеки, чтобы делать это просто и легко. Реестр мягко сложно обновить с помощью программы и чрезвычайно трудно для любого человека читать, особенно не-программист.
-
В плохие старые дни, когда каждая программа имела каталог и хранила все свои данные в этом каталоге, вы можете удалить программу, просто удалив каталог, и вы можете уверенно создать резервную копию программы, просто скопировав этот каталог, С реестром вам нужна специальная программа для удаления для каждой программы, и обычно бывает, что устаревшие или нежелательные записи плавают в реестре неопределенно.
Есть ли кто-нибудь, кто может сказать с прямым лицом, что реестр легко управлять, или что он повышает надежность системы?
Я думаю, что Microsoft должна была создать центральный файл, который записывал каталог, в котором установлено каждое приложение, и расширения файлов, которые он знает, как их открыть. Это должна быть единственная информация, которую ОС должна знать о приложении. Все остальное должно храниться в собственном каталоге приложения.
Обновление: ответ Мику
Я не согласен с большинством пунктов в указанной статье. Например: "Вы не можете хранить двоичные данные в INI файле", а "файлы INI имеют только два уровня структуры". Если в системном INI файле хранится только информация, которую ОС должна знать о приложениях, это всего лишь несколько текстовых строк, нет необходимости в бинарных данных или иерархической структуре. Приложение INI должно просто хранить информацию о конфигах и предпочтениях, и, следовательно, опять же, нет необходимости в двоичных данных и иерархиях. Преимущество формата INI состояло в том, что он был простым, удобочитаемым текстовым файлом. Это упростило анализ, простоту обновления и удобство управления. Весь смысл моего первоначального сообщения состоял в том, что, добавив реестр со всеми сложными функциями, Microsoft заменила что-то, что было легко справиться с чем-то, что было трудно управлять.
В некоторых случаях о безопасности и concurrency существует некоторая ценность. Но, безусловно, мы могли бы решить эти проблемы в рамках существующей структуры.
Конечно, INI файл не создает хорошую базу данных. Но что? Это не то, для чего. Это похоже на то, что пара обуви не помогает вам плавать или давать вам возможность летать или готовить завтрак, и поэтому мы должны заменить все туфли флешками с ручным управлением с радиоуправлением и встроенными микроволновыми печами. Результат, несомненно, будет чрезмерно сложным, неуклюжим монстром. Было бы неудобно ходить, и, вероятно, это было бы не очень хорошо для купания или завтрака. Вместо того, чтобы быть очень хорошим для одного - ходить - это было бы едва пригодным для дюжины вещей. Вещи, которые, кстати, у нас уже были отличные инструменты для достижения. О, вроде как в реестре.
Ответ 2
Реестр Windows был предназначен для ограничения распространения локальных файлов .ini
, которые были написаны программами.
Было хорошо аргументировано, что конкретная реализация была far хуже, чем проблема, которую он решил вылечить. Я должен был согласиться с точной хирургией в реестре или двумя в моей жизни.
Ответ 3
Цель реестра
Реестр Windows является иерархическим база данных, хранящая конфигурацию настройки и параметры в Microsoft Операционные системы Windows. Это содержит настройки для низкоуровневых компонентов системы, а также приложения, запущенные на платформе: ядро, драйверы устройств, службы, SAM, пользовательский интерфейс и сторонний все приложения используют Реестр. Реестр также предоставляет означает доступ к счетчикам для профилирования производительности системы.
Почему реестр за INI файлами?
.INI файлы, хранящиеся у каждого пользователя программы настройки в отдельном файле. От контраста, в реестре Windows все настройки приложения в одном центрального хранилища и в стандартизованная форма. Это предлагает несколько преимущества над файлами INI. [2] поскольку доступ к реестру не требуют разбора, его можно прочитать из или записывается быстрее, чем INI файл. Кроме того, строго типизированные данные могут храниться в реестре, в отличие от к текстовой информации, хранящейся в INI файлы. Поскольку пользовательский реестр настройки загружаются из пользовательский путь, а не только для чтения, реестра позволяет нескольким пользователям использовать одну и ту же машину, а также позволяет программам работать на пользователь с наименьшими привилегиями. Резервирование и восстановление также упрощается, поскольку к реестру можно получить доступ через сетевое подключение для удаленных управления/поддержки, в том числе скриптов, используя стандартный набор API, если удаленный реестр служба работает и правила брандмауэра разрешите это.
В реестре есть функции, которые улучшают целостность системы, поскольку реестр построена как база данных и предлагает базы данных, такие как атомные Обновления. Если два процесса пытаются обновить то же значение реестра на В то же время одно изменение процесса будет предшествуют другой и общей согласованность данных будет поддерживается. В случае внесения изменений в INI, такие условия гонки могут приводят к несогласованности данных, которые не соответствует ни попытке обновления. Windows Vista и Windows 7 обеспечивают транзакционные обновления реестра, расширение возможностей атомарности через множественный ключ и/или значение изменения, с традиционным прерыванием фиксации семантика. (Обратите внимание, однако, что NTFS обеспечивает такую поддержку файла системы, так что те же гарантии теоретически можно получить с помощью традиционные файлы конфигурации.)
Ответ 4
Центральное вездесущее управление настройками и настройками программы.
Ответ 5
Собственно, так было в Windows 3.1, причем многие приложения использовали свои собственные файлы INI. Windows 95 (из памяти) представила концепцию централизованного репозитория (хотя я думаю, что до этого был реестр с ограниченными возможностями), и люди с тех пор покупают программы для очистки реестра.
Люди обычно жаловались на то, что для управления было слишком много файлов INI, и эта скорость была проблемой, поскольку они были текстовыми файлами, которые нуждались в разборе. Я, например, предпочитаю, чтобы приложения имели свои собственные материалы в своих собственных каталогах, чтобы упростить очистку, когда вы хотите их удалить.
Ответ 6
Это просто глупое соглашение. В файловой системе unix или mac программное обеспечение делает именно то, что вы предлагаете, записывая свои настройки в обычные файлы, обычно организованные в скрытые папки в домашнем каталоге пользователя. У Windows есть что-то похожее, папка "Данные приложения" у каждой домашней папки пользователя, и ваша программа может использовать ее для хранения вместо того, чтобы прикручивать с помощью API Windows и реестра.
Ответ 7
Цитата из wikipedia:
При первом внедрении в Windows 3.1 основной целью реестра Windows было сохранение информации о конфигурации для компонентов на основе COM. С введением Windows 95 и Windows NT его использование было расширено, чтобы убрать избыток файлов INI для каждой программы, которые ранее использовались для хранения параметров конфигурации для программ Windows.
Ответ 8
Почему программное обеспечение не может просто записывать переменные в свои локальные файлы?
Он может, но это может быть неудобно для разработчика программного обеспечения, потому что:
- Разработчик должен написать собственный парсер.
- Разработчик должен написать собственную логику сериализации.
- Пользователи, которые хотят вручную редактировать параметры, должны изучить синтаксис данного конфигурационного файла.
Реестр - это не что иное, как простая (от предполагаемой прогностической) базы данных.
Ответ 9
Поскольку команда Windows NT считала, что это хороший способ решить проблемы с использованием файлов INI. Это было основным способом, когда приложения (и сама Windows) сохраняли свои настройки в ранних версиях Windows: просто "записывая переменные в свои локальные файлы".
Теперь мы получили почти полный круг файлов конфигурации XML, что в значительной степени связано с неправильным поведением поставщиков приложений в отношении реестра и неотъемлемой вероятностью (очевидно, что в ретроспективе) монолитной базы данных, которая постепенно искажается с течением времени. Хотя, честно говоря, большинство современных критических замечаний в реестре забывают или просто замалчивают компромиссы, которые должны были быть сделаны по причинам производительности за счет масштабируемости на тех ранних машинах Windows.