Где хранятся настройки программ в windows 7

Обновлено: 06.07.2024

Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в большинстве операционных систем семейства Microsoft Windows [2].

В реестре хранятся данные, которые необходимы для правильного функционирования Windows. К ним относятся профили всех пользователей, сведения об установленном программном обеспечении и типах документов, которые могут быть созданы каждой программой, информация о свойствах папок и значках приложений, а также установленном оборудовании и используемых портах [1].

Открытие реестра¶

Поскольку файлов в реестре несколько, его нельзя открыть, например, в текстовом редакторе и внести какие-либо коррективы. Для работы с ним требуется специальная программа – редактор реестра, который является встроенным компонентом операционной системы Windows и вызывается путем ввода команды Regedit [4].

Существует несколько способов открыть редактор реестра.

Способ №1 – Открытие через утилиту «Выполнить»:

  1. Выбрать Пуск → Выполнить, либо нажать сочетание клавиш Win+R ( Win — клавиша, между Ctrl и Alt в нижнем ряду клавиатуры, обычно на ней изображен значок Microsoft Windows ;
  2. В открывшимся окне ввести команду regedit ;
  3. Нажать клавишу ОК .

Рис. 1 – Открытие через утилиту «Выполнить»

Рис. 1 – Открытие через утилиту «Выполнить»

Способ №2 – Открытие через поиск по меню «Пуск»:

  1. Открыть меню Пуск;
  2. Ввести в строке поиска regedit и запустить найденный файл, который отобразится в верхней части Пуска.

Рис. 2 – Открытие через поиск по меню «Пуск»

Рис. 2 – Открытие через поиск по меню «Пуск»

С другими способами можно ознакомиться в статье Три способа открыть редактор реестра Windows.

Структура реестра¶

Реестр имеет иерархическую структуру, которая напоминает файловую систему жесткого диска – с его каталогами, подкаталогами и файлами. Но называются элементы реестра по-другому: верхний уровень иерархии составляют разделы, каждый из которых может содержать вложенные подразделы, а также параметры. Именно в параметрах хранится основное содержимое реестра, разделы служат лишь для группировки схожих по назначению параметров [4].

Рис. 3 – Редактор реестра

Рис. 3 – Редактор реестра

Далее приведен краткий перечень и краткое описание стандартных разделов реестра. Максимальная длина имени раздела составляет 255 символов.

HKEY_CURRENT_USER

Данный раздел является корневым для данных конфигурации пользователя, вошедшего в систему в настоящий момент. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Вместо полного имени раздела иногда используется аббревиатура HKCU .

HKEY_USERS

Данный раздел содержит все активные загруженные профили пользователей компьютера. Раздел HKEY_CURRENT_USER является подразделом раздела HKEY_USERS . Вместо полного имени раздела иногда используется аббревиатура HKU .

HKEY_LOCAL_MACHINE

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

HKEY_CLASSES_ROOT

Является подразделом HKEY_LOCAL_MACHINE\Software . Хранящиеся здесь сведения обеспечивают выполнение необходимой программы при открытии файла с использованием проводника. Вместо полного имени раздела иногда используется аббревиатура HKCR . Начиная с Windows 2000, эти сведения хранятся как в HKEY_LOCAL_MACHINE , так и в HKEY_CURRENT_USER .

Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes , переопределяют принятые по умолчанию и относятся только к текущему пользователю.

Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников. Кроме того, раздел HKEY_CLASSES_ROOT предоставляет эти объединенные данные программам, разработанным для более ранних версий Windows. Изменения настроек текущего пользователя выполняются в разделе HKEY_CURRENT_USER\Software\Classes . Модификация параметров по умолчанию должна производиться в разделе HKEY_LOCAL_MACHINE\Software\Classes . Данные из разделов, добавленных в HKEY_CLASSES_ROOT , будут сохранены системой в разделе HKEY_LOCAL_MACHINE\Software\Classes . Если изменяется параметр в одном из подразделов раздела HKEY_CLASSES_ROOT и такой подраздел уже существует в HKEY_CURRENT_USER\Software\Classes , то для хранения информации будет использован раздел HKEY_CURRENT_USER\Software\Classes , а не HKEY_LOCAL_MACHINE\Software\Classes .

HKEY_CURRENT_CONFIG

Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы.

Реестр 64-разрядных версий Windows подразделяется на 32- и 64-разрядные разделы. Большинство 32-разрядных разделов имеют те же имена, что и их аналоги в 64-разрядном разделе, и наоборот. По умолчанию редактор реестра 64-разрядных версий Windows отображает 32-разрядные разделы в следующем узле: HKEY_LOCAL_MACHINE\Software\WOW6432Node

Файлы реестра на жестком диске¶

Основные файлы, отвечающие за формирование реестра хранятся в папке %SystemRoot%\System32\Config\ . Обычно это C:\Windows\System32\Config\ и в зависимости от версии ОС их состав может несколько различаться.

Файл, хранящий личные настройки пользователя, «скрыт» в папке соответствующей учетной записи, например, в C:\Documents and Settings\Dmitry . Также файлы, отвечающие за пользовательские настройки, могут храниться в:

  • C:\Documents and Settings\%Username%\(Ntuser.dat) ;
  • C:\Documents and Settings\%Username%\Local Settings\Application Data\Microsoft\Windows\ (UsrClass.dat) .

Еще есть резервные копии файлов реестра, созданные системой, хранятся они в

  • C:\Windows\System32\config\RegBack – для Windows 7 и Server 2008;
  • C:\Windows\repair – для XP и Server 2003.

По умолчанию операционная система делает резервные копии этих файлов раз в 10 дней с помощью планировщика задач.

Вспомогательные файлы для всех кустов за исключением HKEY_CURRENT_USER хранятся в системах Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003 и Windows Vista в папке %SystemRoot%\System32\Config .

Вспомогательные файлы для куста HKEY_CURRENT_USER хранятся в папке %SystemRoot%\Profiles\Имя_пользователя . Расширения имен файлов в этих папках указывают на тип содержащихся в них данных. Отсутствие расширения также иногда может указывать на тип содержащихся в файле данных.

Куст (дерево) реестра (англ. hive) - это группа разделов, подразделов и параметров реестра с набором вспомогательных файлов, содержащих резервные копии этих данных.

Таблица 1 — Соответствие кустов реестра и вспомогательных файлов ¶
Куст реестра Вспомогательные файлы
HKEY_LOCAL_MACHINE\SAM Sam , Sam.log , Sam.sav
HKEY_LOCAL_MACHINE\Security Security , Security.log , Security.sav
HKEY_LOCAL_MACHINE\Software Software , Software.log , Software.sav
HKEY_LOCAL_MACHINE\System System , System.alt , System.log , System.sav
HKEY_CURRENT_CONFIG System , System.alt , System.log , System.sav , Ntuser.dat , Ntuser.dat.log
HKEY_USERS\DEFAULT Default , Default.log , Default.sav

Например, кусту HKEY_LOCAL_MACHINE\Software соответствует на жестком диске файл C:\Windows\System32\config\SOFTWARE .

Как узнать, где программа хранит свои настройки в реестре

Часто возникает необходимость узнать, где та или иная программа (приложение) хранят свои настройки в реестре Windows. Бывает, что поиск по реестру не дает никаких результатов, или же программа хранит свои настройки не в одной какой-либо ветке реестра, а в нескольких и нужно их все найти, чтобы посмотреть/поменять настройки или сделать их резервную копию. В данной статье мы рассмотрим как это можно сделать.

Как узнать, где программа хранит свои настройки в реестре

После скачивания и распаковки архива можно обнаружить два exe файла: Procmon.exe и Procmon64.exe

После первого запуска, программа предложит нам принять условия лицензионного соглашения, поэтому не забываем нажать кнопочку "Agree"



Для примера посмотрим к каким разделам реестра обращается стандартный графический редактор Paint, который присутствует в ОС Windows. Для этого сначала запускаем Process Monitor, а после этого интересующее нас приложение, в данном примере графический редактор Paint. Далее, в диспетчере смотрим как именно называется исполняемый файл, в случае с Пейнтом, он называется mspaint.exe .

Чтобы отфильтровать все ненужные записи от любых других приложений, мы включим фильтр, в котором укажем, что хотим видеть только активность, которая вызвана процессом mspaint.exe , для этого мы выбираем пункт меню "Filter" и в нем опцию с одноименным названием "Filter. ".


После чего выбираем из раскрывающегося меню пункт "Process Name", вписываем имя нужного нам процесса mspaint.exe и жмем на кнопку "Add", чтобы наш фильтр добавился:


Теперь осталось применить фильтр, чтобы все посторонние записи не отображались. Для этого жмем на кнопку "Apply" и потом на "OK", для закрытия окна настроек.


В результате перед нами будет вся информация о том, к каким конкретно разделам и ключам реестра обращается mspaint.exe в процессе своей работы:


Теперь можно закрыть редактор Paint и посмотреть куда он записывает все свои настройки, после завершения работы. Они будут также отображаться в окне Process Monitor, достаточно просто воспользоваться скроллом. Таким не хитрым способом, можно мониторить любой процесс и точно знать как и где он хранит информацию.

Думаю, многие из вас встречали пользователей, которые хранят все данные в папках на "Рабочем столе" Windows. Потерять важные данные при таком хранении файлов - элементарно. Я сталкивался со случаями, когда после переустановки Windows пользователь терял все свои фотографии за несколько лет без возможности восстановления.

реклама


Дешевая 3070 Gigabyte Gaming - успей пока не началось

Я и сам частенько терял данные, и в какой-то момент решил, что так дело не пойдет и нужно разработать для себя систему, как и что сохранять при переустановке Windows. Эта система помогала мне не только сохранять свои данные, но и данные пользователей, которым я переустанавливал Windows.

Если вы начнете пользоваться этой системой, вас не застанет врасплох вопрос после переустановки Windows - "А где моя дипломная работа? Она была на рабочем столе!".

Почему данные пропадают?

реклама

var firedYa28 = false; window.addEventListener('load', () => < if(navigator.userAgent.indexOf("Chrome-Lighthouse") < window.yaContextCb.push(()=>< Ya.Context.AdvManager.render(< renderTo: 'yandex_rtb_R-A-630193-28', blockId: 'R-A-630193-28' >) >) >, 3000); > > >);

Потеря данных происходит потому, что переустановку Windows чаще всего делают с пересозданием или форматированием системного раздела, и все, что лежит в "Моих документах" и "Рабочем столе" пропадает практически безвозвратно. Пропадут и сохраненные логины и пароли в браузере, если он не синхронизирует их автоматически.


Откуда стоит сохранить данные?

Самые первые места, откуда стоит сохранить все данные, это "Рабочий стол", который обычно расположен по адресу c:\Users\*имя пользователя*\Desktop и "Мои документы", которые лежат по адресу c:\Users\*имя пользователя* \Documents.


реклама

Не лишним будет проверить папки c:\Users\*имя пользователя*\Videos и c:\Users\*имя пользователя*\Saved Games.

Сохранения игр обычно лежат в папке c:\Users\*имя пользователя*\Documents, но стоит проверить и саму папку игры, особенно, если она старая - в c:\Program Files (x86), а так же папки c:\Users\*имя пользователя*\AppData, где могут лежать и файлы настроек, и конфигурационные файлы игр и программ.

Еще стоит проверить папки "Загрузки" и "Изображения" на наличие ценных файлов.

реклама


Лучше сохранять файлы избыточно, то есть лучше сохранить лишнего, чем сохранить мало. Особенно на чужом компьютере. И если спустя несколько недель файлы не понадобились, их копии можно удалить.

Очень удобно перенести папки "Рабочий стол" и "Мои документы" на не системный диск, в этом случае они сохранятся при переустановке Windows и не будут занимать ценное место на системном диске.

Сохраняем данные браузера

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


Если вы пользуетесь браузером Mozilla Firefox, то для вас есть еще более удобный инструмент, чем синхронизация. С помощью утилиты MozBackup-1.5.1-ru вы можете сохранить Mozilla Firefox со всеми настройками, журналом, авторизациями на сайтах и даже масштабом для каждого из ваших сайтов.


И потом восстановить в три клика на новом Windows.

Специфические данные программ и утилит

Есть много утилит даже на обычном игровом ПК, данные из которых стоит сохранить. Например, настройки MSI Afterburner. Ведь настройка кривой частот/напряжений и кривой вентиляторов - дело трудоемкое.

Лежат ее настройки по адресу c:\Program Files (x86)\MSI Afterburner\Profiles.


Точно также стоит сохранить настройки программ настройки материнской платы, идущих с ней в комплекте, например, PC Probe от ASUS.


Стоит также проверить, куда сохраняют данные мессенджеры, которые установлены на ПК, например, Viber. Viber сохраняет полученные фото и видео в папку c:\Users\*имя пользователя*\Documents\ViberDownloads.


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


А самый надежный способ обезопасить свои данные - это настроить ежедневный бэкап на отдельный диск или в облако. Для этого можно воспользоваться, к примеру, утилитами от Acronis или бесплатными Allway Sync или FreeFileSync.

Примечание. Все упоминаемые в статье модули, функции и т.п. относятся к Delphi.

Нижеприведенный текст являет собой вольное изложение отдельных статей февральского выпуска Microsoft Platform SDK. Год 2001 от рождества Христова. При проектировании способов хранения настроек своей программы следует задаться тремя вопросами:

  • Что хранить?
  • Где хранить?
  • Как хранить?

Что хранить

Поскольку первая часть вопроса нам известна по определению, т.е. хранить мы будем настройки программы, то перейдем ко второй части вопроса. Ваша программа устанавливается на КОМПЬЮТЕР а пользуются ей ПОЛЬЗОВАТЕЛИ. Соответственно все настройки разделяются на две части а то и на все три - настройки которые относятся к компьютеру в целом, настройки которые относятся ко всем локальным пользователям, настройки которые относятся к конкретному пользовател. В зависимости от специфики программы первая и вторая часть могут быть совмещены или разделены. Поэтому важно сделать логическое разделение - какие настройки вашей программы действительно специфичны для самого ПК, какие настройки должны прилагаться ко всем пользователям, какие должны прилагаться к конкретному пользователю. Кроме того Мокрософт рекомендует чтобы настройки учитывали возможную мобильность пользователя, т.е. для пользователя находящегося в разных местах, возможно потребуется иметь разные наборы настроек.

Где хранить

Вообще в голову приходят три вещи.

  • Хранить настройки в системном реестре.
  • Хранить настройки в каталоге куда установлена программа.
  • Хранить настройки в системном каталоге Windows.
  • Хранить настройка в домашнем каталоге пользователя.
  • Системный реестр.
  • Домашний каталог пользователя (точнее один из его подкаталогов).
  • Общий каталог для пользователей.
  • часть реестра HKEY_CURRENT_USER\*
  • содержимое своего домашнего каталога.
  • содержимое временного каталога (который как правило находится внутри домашнего).
  • содержимое некого каталога или каталогов специально выделенного для этого администратором.

Системный реестр

С точки зрения хранения настроек программы системный реестр разделен на две части. Это ветви HKEY_CURRENT_USER для хранения настроек специфичных для пользователя, и HKEY_LOCAL_MACHINE для хранения настроек специфичных для всего ПК и соответственно всех пользователей, работающих с этим ПК. Рекомендуемая структура ветвей для хранения настроек программы - HKEY_CURRENT_USER\Software\Company Name\Application Name\Version и соответственно HKEY_LOCAL_MACHINE\Software\Company Name\Application Name\Version. Параметры Company Name, Application Name, Version желательно не хранить в виде hard-coded строк в коде программы а устанавливать в опциях проекта (Project\Options\Version Info) и доставать впоследствии из ресурса с помощью той же библиотеки RxLib. Альтернативный путь выбирать данные о версии программы из ресурсов - использование Windows API (GetFileVersionInfo, GetFileVersionInfoSize, VerQueryValue). Программе следует расчитывать на то что доступ к подключам HKEY_LOCAL_MACHINE разрешен в режиме только для чтения, а доступ к подключам HKEY_CURRENT_USER допускает чтение, изменение и создание новых подключей и значений. Программе следует расчитывать на то что нужных ей ключей может не оказаться в реестре или значения лежащие в реестре имеют неверный формат или недопустимые значения. В таком случае, вместо несуществующих или неверных значений настройки, программа должна использовать значения по умолчанию которые разработчик может "железно забить в код" или получить с помощью различных системных функций. Не следует использовать системный реестр для хранения больших кусков данных. Вместо этого лучше хранить объемные данные в отдельном файле, а в реестре запомнить имя этого файла.

Домашний каталог пользователя

Для хранения настроек слишком больших для того чтобы их размещать в реестре существуют специально выделенные каталоги внутри домашнего каталога пользователя. Эти каталоги обычно называются "специальными каталогами" и имеют имена Application Data и Local Settings. Полный путь к ним можно получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Общий каталог пользователей

Обычно это каталог "Documents and Settings\All users". Внутри него имеются такие-же подкаталоги для хранения настроек и данных программ но относящихся ко всем пользователям. Полный путь к ним можно также получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Как хранить

Системный реестр

Для работы с системным реестром можно использовать функции Registry API общим числом около 40 штук, а можно использовать классы из Registry.pas - TRegistry, TRegistryIniFile, TRegIniFile. Особенно следует обратить внимание на TRegistryIniFile который предоставляет упрощенную модель доступа к системному реестру очень схожую с моделью работы с INI-файлами.

Это старый метод хранения настроек программ, но все еще применяющийся программистами. Настройки хранятся в текстовом файле в виде:

Для доступа к данным содержащимся в INI-файлах существуют классы из модуля IniFiles - TIniFile, TMemIniFile. Преимущество использования INI-файлов состоит в том что их можно легко подредактировать с помощью текстового редактора. Они обычно легче воспринимаются для прочтения нежели дерево ключей системного реестра.

Бинарные файлы настроек

Отдельно хочется поговорить о использовании бинарных файлов в качестве хранилища для настроек программы. Обычные мотивы любителей использовать бинарные файлы:

  • Экономится место.
  • Настройку можно спрятать от пользователя (сделать нечитабельной).

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

Заключение

Почти вся эта информация была вычерпана из кладезя мудрости под названием Platform SDK (Software Development Kit), поставляемого в составе сборника документации MSDN (Microsoft Software Developer Network). Разработчикам настоятельно рекомендуется приобрести Platform SDK, это снимает огромную массу вопросов связанную с программированием под Windows.

Читайте также: