Какой смысл в системном реестре? - PullRequest
11 голосов
/ 25 июля 2010

Извините за то, что я действительно невежественен, я просто хочу узнать, зачем нужен реестр для программ? Для чего и почему программное обеспечение не может просто записывать переменные в свои локальные файлы? Это делает что-то, о чем я не знаю?

Ответы [ 9 ]

21 голосов
/ 25 июля 2010

ИМХО, Реестр Windows - это изобретение, почти такое же практичное и полезное, как домашний рок.

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

  2. Старые файлы INIлегко читались и обновлялись как компьютерами, так и людьми.Для действительно ленивого программиста, который не мог понять, как манипулировать простым текстовым файлом, были библиотечные функции, которые делали это просто и легко.Реестр слегка сложен для обновления с помощью программы, и его чрезвычайно трудно читать любому человеку, особенно не программисту.

  3. В старые добрые времена, когда у каждой программы был каталоги сохраняя все свои данные в этом каталоге, вы можете удалить программу, просто удалив каталог, и вы можете уверенно создать резервную копию программы, просто скопировав этот каталог.С реестром вам нужна специальная программа удаления для каждой программы, и обычно устаревшие или ненужные записи плавают в реестре неопределенно долго.

Есть ли кто-нибудь, кто можетСкажите прямо, что реестром легко управлять или что он повышает надежность системы?

Я думаю, что Microsoft должна была создать центральный файл, в котором записан каталог, в котором установлено каждое приложение.и расширения файлов, которые он знает, как открыть.Это должна быть единственная информация, которую ОС должна знать о приложении.Все остальное должно храниться в собственном каталоге приложения.

Обновление: Ответить Мику

Я не согласен с большинством пунктов в ссылочной статье.Например, «Вы не можете хранить двоичные данные в файле INI» и «Файлы INI имеют только два уровня структуры».Если в системном INI-файле хранится только та информация, которую ОС должна знать о приложениях, то есть всего несколько текстовых строк, нет необходимости в двоичных данных или иерархической структуре.INI приложения должен просто хранить информацию о конфигурации и предпочтениях, и, следовательно, опять же, нет необходимости в двоичных данных и иерархиях.Преимущество формата INI состояло в том, что это был простой читаемый текстовый файл.Это облегчало анализ, обновление и управление.Суть моего первоначального поста заключалась в том, что, добавив реестр со всеми видами сложных функций, Microsoft заменила что-то, что было легко управлять, чем-то, что было трудно управлять.

В пунктах обезопасность и параллелизм.Но, безусловно, мы могли бы решить эти проблемы в рамках существующей среды.

Конечно, файл INI не является хорошей базой данных.Ну и что?Это не то, для чего это было.Это все равно, что жаловаться на то, что пара обуви не помогает вам плавать и не позволяет летать или готовить завтрак, и поэтому мы должны заменить все ботинки на ластах с реактивным двигателем с радиоуправлением и встроенными микроволновыми печами.Результатом, несомненно, будет чрезмерно сложное, неловкое чудовище.Было бы неудобно ходить, и, вероятно, было бы не очень хорошо плавать или готовить завтрак.Вместо того, чтобы быть очень хорошим с одной стороны - ходить - его вряд ли можно будет использовать с дюжиной вещей.Вещи, которые, между прочим, у нас уже были совершенно хорошие инструменты для достижения.О, вроде как реестр.

10 голосов
/ 25 июля 2010

Реестр Windows был , предназначенным для предотвращения распространения локальных .ini файлов, которые записывали программы.

Было хорошо доказано , что конкретная реализация была гораздо хуже , чем проблема, которую она намеревалась решитьМне пришлось согласиться на то, что мне пришлось сделать точную операцию на одном или двух регистрах в моей жизни.

7 голосов
/ 25 июля 2010

Назначение реестра

Реестр Windows - это иерархическая база данных, в которой хранятся параметры конфигурации и параметры в операционных системах Microsoft Windows.Он содержит настройки для низкоуровневых компонентов операционной системы, а также приложений, работающих на платформе: ядро, драйверы устройств, службы, SAM, пользовательский интерфейс и сторонние приложения используют реестр.Реестр также предоставляет средства для доступа к счетчикам для профилирования производительности системы.

Почему реестр по файлам INI?

.INI-файлы хранятся в каждой программеНастройки пользователя в отдельном файле.В отличие от этого, реестр Windows хранит все параметры приложения в одном центральном хранилище и в стандартизированной форме.Это дает несколько преимуществ перед файлами INI. [2]Поскольку доступ к реестру не требует анализа, его можно читать или записывать быстрее, чем файл INI.Кроме того, строго типизированные данные могут храниться в реестре, в отличие от текстовой информации, хранящейся в файлах INI.Поскольку пользовательские параметры реестра загружаются из пользовательского пути, а не из системного местоположения, доступного только для чтения, реестр позволяет нескольким пользователям совместно использовать один и тот же компьютер, а также позволяет программам работать для пользователя с наименьшими привилегиями.Резервное копирование и восстановление также упрощается, поскольку доступ к реестру можно получить через сетевое соединение для удаленного управления / поддержки, в том числе из сценариев, используя стандартный набор API, если служба удаленного реестра работает и правила брандмауэра позволяют это.

Реестр имеет функции, улучшающие целостность системы, поскольку реестр построен как база данных и предлагает функции, подобные базам данных, такие как атомарные обновления.Если два процесса пытаются обновить одно и то же значение реестра одновременно, изменение одного процесса будет предшествовать другому, и общая согласованность данных будет сохранена.В случае внесения изменений в файлы INI такие условия гонки могут привести к несогласованности данных, которые не соответствуют ни одной из попыток обновления.Windows Vista и Windows 7 предоставляют обновления реестра для транзакций, расширяя гарантии атомарности при множественных изменениях ключей и / или значений с традиционной семантикой фиксации и прерывания.(Однако обратите внимание, что NTFS обеспечивает такую ​​поддержку и для файловой системы, поэтому теоретически такие же гарантии можно получить с помощью традиционных файлов конфигурации.)

Из Википедия - Реестр Windows

6 голосов
/ 25 июля 2010

Централизованное, повсеместное управление настройками и настройками программы.

5 голосов
/ 25 июля 2010

На самом деле, так было в Windows 3.1, когда многие приложения использовали свои собственные файлы INI. В Windows 95 (из памяти) была введена концепция централизованного хранилища (хотя я думаю, что до этого был реестр с ограниченным назначением), и с тех пор люди покупают программы очистки реестра.

Раньше люди жаловались на то, что слишком много файлов INI для управления, и что скорость была проблемой, так как они были текстовыми файлами, которые нуждались в разборе. Я, например, предпочитаю, чтобы приложения имели свои собственные вещи в своих собственных каталогах , чтобы облегчить очистку, когда вы хотите удалить их.

2 голосов
/ 25 июля 2010

Почему программное обеспечение не может просто записывать переменные в свои локальные файлы?

Может, но это может быть неудобно для разработчика программного обеспечения, потому что:

  1. Разработчик должен написать свой собственный анализатор.
  2. Разработчик должен написать собственную логику сериализации.
  3. Пользователи, которые хотят редактировать параметры вручную, должны изучить синтаксис данного файла конфигурации.

Реестр - не более чем простая (с точки зрения программиста) база данных.

2 голосов
/ 25 июля 2010

Цитируется дословно из википедии:

Когда впервые появился в Windows 3.1, основной задачей реестра Windows было хранение информации о конфигурации для компонентов на основе COM.С появлением Windows 95 и Windows NT его использование было расширено, чтобы привести в порядок множество INI-файлов для каждой программы, которые ранее использовались для хранения параметров конфигурации для программ Windows.

http://en.wikipedia.org/wiki/Windows_Registry

2 голосов
/ 25 июля 2010

Это просто глупое соглашение. В файловой системе Unix или Mac программа делает именно то, что вы предлагаете, записывая свои настройки в обычные файлы, обычно организованные в скрытых папках в домашнем каталоге пользователя. В Windows есть нечто похожее: папка «Данные приложения» находится вне домашней папки каждого пользователя, и ваша программа может использовать ее для хранения данных вместо того, чтобы использовать API-интерфейсы Windows и реестр.

0 голосов
/ 08 ноября 2010

Поскольку команда Windows NT считала, что это хороший способ решить проблемы с использованием файлов INI . Это был основной способ, которым приложения (и сама Windows) сохраняли свои настройки в ранних версиях Windows: просто «записывая переменные в свои локальные файлы».

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

...