stringtranslate.com

Реестр Windows

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

Другими словами, реестр или реестр Windows содержит информацию, настройки, опции и другие значения для программ и оборудования, установленных во всех версиях операционных систем Microsoft Windows. Например, когда устанавливается программа, в реестр Windows добавляется новый подраздел, содержащий такие настройки, как местоположение программы, ее версия и способ запуска программы.

При появлении в Windows 3.1 реестр Windows в первую очередь хранил информацию о конфигурации для компонентов на базе COM . Windows 95 и Windows NT расширили его использование для рационализации и централизации информации в изобилии файлов INI , которые содержали конфигурации для отдельных программ и хранились в различных местах. [1] [2] Для приложений Windows не является обязательным использование реестра Windows. Например, приложения .NET Framework используют файлы XML для конфигурации, в то время как переносимые приложения обычно хранят свои файлы конфигурации вместе со своими исполняемыми файлами .

Обоснование

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

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

Структура ключа реестра

Ключи и значения

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

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

Например, HKEY_LOCAL_MACHINE\Software\Microsoft\Windows ссылается на подраздел «Windows» подраздела «Microsoft» подраздела «Software» корневого раздела HKEY_LOCAL_MACHINE.

Существует семь предопределенных корневых ключей, традиционно именуемых в соответствии с их постоянными идентификаторами, определенными в Win32 API, или с помощью синонимичных сокращений (в зависимости от приложений): [4]

Как и другие файлы и службы в Windows, все ключи реестра могут быть ограничены списками управления доступом (ACL) в зависимости от привилегий пользователя, токенов безопасности, полученных приложениями, или политик безопасности системы, применяемых системой (эти ограничения могут быть предопределены самой системой и настроены локальными системными администраторами или администраторами домена). Различные пользователи, программы, службы или удаленные системы могут видеть только некоторые части иерархии или отдельные иерархии из одних и тех же корневых ключей.

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

Терминология несколько вводит в заблуждение, поскольку каждый раздел реестра похож на ассоциативный массив , где стандартная терминология ссылается на часть имени каждого значения реестра как на «ключ». Термины являются отходом от 16-битного реестра в Windows 3, в котором разделы реестра не могли содержать произвольные пары имя/данные, а содержали только одно неименованное значение (которое должно было быть строкой). В этом смысле реестр Windows 3 был похож на один ассоциативный массив, в котором ключи (в смысле как «ключ реестра», так и «ключ ассоциативного массива») образовывали иерархию, а все значения реестра были строками. Когда был создан 32-битный реестр, то же самое было и с дополнительной возможностью создания нескольких именованных значений для каждого ключа, и значения имен были несколько искажены. [6] Для совместимости с предыдущим поведением каждый раздел реестра может иметь значение «по умолчанию», именем которого является пустая строка.

Каждое значение может хранить произвольные данные с переменной длиной и кодировкой, но которые связаны с символическим типом (определяемым как числовая константа), определяющим, как анализировать эти данные. Стандартные типы: [7]

Корневые ключи

Ключи на корневом уровне иерархической базы данных обычно именуются по их определениям Windows API , которые все начинаются с «HKEY». [2] Их часто сокращают до трех- или четырехбуквенного короткого имени, начинающегося с «HK» (например, HKCU и HKLM). Технически они являются предопределенными дескрипторами (с известными постоянными значениями) для определенных ключей, которые либо поддерживаются в памяти, либо хранятся в файлах кустов, хранящихся в локальной файловой системе и загружаемых ядром системы во время загрузки, а затем совместно используются (с различными правами доступа) всеми процессами, запущенными в локальной системе, или загружаются и отображаются во всех процессах, запущенных в сеансе пользователя, когда пользователь входит в систему.

Узлы HKEY_LOCAL_MACHINE (локальные данные конфигурации машины) и HKEY_CURRENT_USER (данные конфигурации пользователя) имеют схожую структуру; пользовательские приложения обычно ищут свои настройки, сначала проверяя их в "HKEY_CURRENT_USER\Software\Имя поставщика\Имя приложения\Версия\Имя настройки", и если настройка не найдена, вместо этого ищут в том же месте под ключом HKEY_LOCAL_MACHINE. Однако обратное может применяться для параметров политики, принудительно применяемых администратором , где HKLM может иметь приоритет над HKCU. Программа Windows Logo предъявляет особые требования к тому, где могут храниться различные типы пользовательских данных, и к соблюдению концепции наименьших привилегий , чтобы для использования приложения не требовался доступ на уровне администратора. [a] [10]

HKEY_LOCAL_MACHINE (HKLM)

Сокращенно HKLM, HKEY_LOCAL_MACHINE хранит настройки, специфичные для локального компьютера. [11]

Ключ, обнаруженный HKLM, на самом деле не хранится на диске, а поддерживается в памяти ядром системы для сопоставления всех других подразделов. Приложения не могут создавать никаких дополнительных подразделов. В Windows NT этот раздел содержит четыре подраздела, "SAM", "SECURITY", "SYSTEM" и "SOFTWARE", которые загружаются во время загрузки в соответствующие файлы, расположенные в папке %SystemRoot%\System32\config. Пятый подраздел, "HARDWARE", является изменчивым и создается динамически, и как таковой не хранится в файле (он предоставляет вид всех обнаруженных в данный момент устройств Plug-and-Play). В Windows Vista и выше шестой и седьмой подразделы, "COMPONENTS" и "BCD", сопоставлены в памяти ядром по требованию и загружаются из %SystemRoot%\system32\config\COMPONENTS или из данных конфигурации загрузки, \boot\BCD в системном разделе.

HKEY_CLASSES_ROOT (HKCR)

Сокращенно HKCR, HKEY_CLASSES_ROOT содержит информацию о зарегистрированных приложениях, таких как ассоциации файлов и идентификаторы классов объектов OLE , связывая их с приложениями, используемыми для обработки этих элементов. В Windows 2000 и выше HKCR представляет собой компиляцию пользовательских HKCU\Software\Classes и машинных HKLM\Software\Classes. Если заданное значение существует в обоих вышеперечисленных подразделах, приоритет имеет значение в HKCU\Software\Classes. [13] Конструкция допускает как машинную, так и пользовательскую регистрацию объектов COM .

HKEY_USERS (HKU)

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

HKEY_CURRENT_USER (HKCU)

Сокращенно HKCU, HKEY_CURRENT_USER хранит настройки, которые являются специфичными для текущего вошедшего в систему пользователя. [14] Ключ HKEY_CURRENT_USER является ссылкой на подраздел HKEY_USERS, который соответствует пользователю; одна и та же информация доступна в обоих местах. Конкретный подраздел, на который ссылается, это "(HKU)\(SID)\...", где (SID) соответствует Windows SID ; если ключ "(HKCU)" имеет следующий суффикс "(HKCU)\Software\Classes\...", то он соответствует "(HKU)\(SID)_CLASSES\...", т. е. строка суффикса "_CLASSES" добавляется к (SID).
В системах Windows NT настройки каждого пользователя хранятся в собственных файлах NTUSER.DAT и USRCLASS.DAT внутри собственной подпапки Documents and Settings (или собственной подпапки Users в Windows Vista и выше). Настройки в этом кусте следуют за пользователями с перемещаемым профилем с машины на машину.

HKEY_PERFORMANCE_DATA

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

HKEY_DYN_DATA

Этот ключ используется только в Windows 95, Windows 98 и Windows ME . [15] Он содержит информацию об аппаратных устройствах, включая статистику Plug and Play и производительности сети. Информация в этом улье также не хранится на жестком диске; информация Plug and Play собирается и настраивается при запуске и хранится в памяти. [16]

Ульи

Несмотря на то, что реестр представляет собой интегрированную иерархическую базу данных, ветви реестра фактически хранятся в нескольких дисковых файлах, называемых кустами . [17] (Слово «улей» является шуткой . ) [18]

Некоторые кусты изменчивы и вообще не хранятся на диске. Примером этого является куст ветви, начинающейся с HKLM\HARDWARE. Этот куст записывает информацию об оборудовании системы и создается каждый раз, когда система загружается и выполняет обнаружение оборудования.

Индивидуальные настройки пользователей в системе хранятся в кусте (файле на диске) для каждого пользователя. Во время входа пользователя система загружает куст пользователя в ключ HKEY_USERS и устанавливает символическую ссылку HKCU (HKEY_CURRENT_USER) для указания на текущего пользователя. Это позволяет приложениям неявно хранить/извлекать настройки для текущего пользователя в ключе HKCU.

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

Расположение файлов

Реестр физически хранится в нескольких файлах, которые, как правило, скрыты от API пользовательского режима, используемых для манипулирования данными внутри реестра. В зависимости от версии Windows, будут разные файлы и разные местоположения для этих файлов, но все они находятся на локальной машине. Местоположение файлов системного реестра в Windows NT: %System Root%\System32\Config; пользовательский куст реестра HKEY_CURRENT_USER хранится внутри Ntuser.datпрофиля пользователя. Для каждого пользователя существует один такой файл; если у пользователя есть перемещаемый профиль , то этот файл будет копироваться на сервер и с него при выходе из системы и входе в систему соответственно. Второй пользовательский файл реестра с именем UsrClass.dat содержит записи реестра COM и по умолчанию не перемещается.

Windows NT

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

В папке профиля каждого пользователя хранится следующий файл:

В Windows 2000, Server 2003 и Windows XP для сопоставления файлов и информации COM используется следующий дополнительный пользовательский файл:

Для Windows Vista и более поздних версий путь был изменен на:

Windows 2000 хранит альтернативную копию кустов реестра (.ALT) и пытается переключиться на нее при обнаружении повреждения. [20] Windows XP и Windows Server 2003 не поддерживают System.altкуст, поскольку NTLDR в этих версиях Windows может обрабатывать System.logфайл для обновления куста System, который стал несогласованным во время выключения или сбоя. Кроме того, %SystemRoot%\Repairпапка содержит копию кустов реестра системы, которые были созданы после установки и первого успешного запуска Windows.

Каждый файл данных реестра имеет связанный файл с расширением «.log», который действует как журнал транзакций , используемый для обеспечения того, чтобы любые прерванные обновления могли быть завершены при следующем запуске. [21] Внутренне файлы реестра разделены на «корзины» по 4  КБ , которые содержат наборы «ячеек». [21]

Windows 9x

Файлы реестра хранятся в %WINDIR%каталоге под именами USER.DATи SYSTEM.DATс добавлением CLASSES.DATв Windows ME. Также каждый профиль пользователя (если профили включены) имеет свой собственный USER.DATфайл, который находится в каталоге профиля пользователя в %WINDIR%\Profiles\<Username>\.

Виндовс 3.11

Вызывается единственный файл реестра REG.DAT, который сохраняется в %WINDIR%каталоге.

Windows 10 Мобильный

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

Если какой-либо из вышеперечисленных методов сработал, файлы реестра устройства можно найти в следующем месте:

{Телефон}\EFIESP\Windows\System32\config

Редактирование

Редакторы реестра

Реестр содержит важную информацию о конфигурации операционной системы, установленных приложений, а также индивидуальные настройки для каждого пользователя и приложения. Небрежное изменение конфигурации операционной системы в реестре может привести к необратимому повреждению, поэтому обычно только программы-установщики вносят изменения в базу данных реестра во время установки/настройки и удаления. Если пользователь хочет вручную отредактировать реестр, Microsoft рекомендует перед изменением сделать резервную копию реестра. [22] Когда программа удаляется из панели управления, она может быть удалена не полностью, и в случае ошибок или сбоев, вызванных ссылками на отсутствующие программы, пользователю может потребоваться вручную проверить внутренние каталоги, такие как файлы программ. После этого пользователю может потребоваться вручную удалить любую ссылку на удаленную программу в реестре. Обычно это делается с помощью RegEdit.exe. [23] Редактирование реестра иногда необходимо при работе со специфическими для Windows проблемами, например, проблемы при входе в домен можно решить путем редактирования реестра. [24]

Реестр Windows можно редактировать вручную с помощью таких программ, как RegEdit.exe, хотя эти инструменты не раскрывают некоторые метаданные реестра, такие как дата последнего изменения.

Редактор реестра для операционных систем серии 3.1/95 — RegEdit.exe, а для Windows NT — RegEdt32.exe; функции объединены в Windows XP. Дополнительные и сторонние инструменты, похожие на RegEdit.exe, доступны для многих версий Windows CE.

Редактор реестра позволяет пользователям выполнять следующие функции:

.REGфайлы

.REGФайлы (также известные как записи регистрации) представляют собой текстовые файлы, удобные для чтения человеком, для экспорта и импорта частей реестра с использованием синтаксиса на основе INI . В Windows 2000 и более поздних версиях они содержат строку Windows Registry Editor Version 5.00 в начале, а в системах Windows 9x и NT 4.0 — строку REGEDIT4 . [26] Файлы REG в Windows 2000 и более поздних версиях основаны на Unicode , а в системах Windows 9x и NT 4.0 — на ANSI . [ требуется цитата ] Файлы формата Windows 9x .REGсовместимы с Windows 2000 и более поздними версиями. [26] Редактор реестра в Windows на этих системах также поддерживает экспорт .REGфайлов в формате Windows 9x/NT. [ требуется цитата ] Данные хранятся в .REGфайлах с использованием следующего синтаксиса: [26]

[< Имя куста>\<Имя ключа >\< Имя подключаемого ключа>] "Имя значения" = <Тип значения>:<Данные значения>   

Значение ключа по умолчанию можно изменить, используя «@» вместо «Имя значения»:

[< Имя куста>\< Имя ключа>\< Имя подключаемого ключа>] @ = <Тип значения>:<Данные значения>   

Для строковых значений не требуется <Value type> (см. пример), но обратные косые черты ('\') необходимо записывать как двойную обратную косую черту ('\\'), а кавычки ('"') — как обратную косую черту-кавычку ('\"').

Например, чтобы добавить значения «Значение A», «Значение B», «Значение C», «Значение D», «Значение E», «Значение F», «Значение G», «Значение H», «Значение I», «Значение J», «Значение K», «Значение L» и «Значение M» в ключ HKLM\SOFTWARE\Foobar:

Редактор реестра Windows версии 5.00[ HKEY_LOCAL_MACHINE \SOFTWARE\Foobar] "Значение A" = "<Строковое значение данных с экранированными символами>" "Значение B" = hex:<Двоичные данные (в виде списка шестнадцатеричных значений, разделенных запятыми)> "Значение C" = dword:<Целое значение DWORD> "Значение D" = hex(0):<REG_NONE (в виде списка шестнадцатеричных значений, разделенных запятыми)> "Значение E" = hex(1):<REG_SZ (в виде списка шестнадцатеричных значений, разделенных запятыми, представляющих строку UTF-16LE с завершающим символом NUL)> "Значение F" = hex(2):<Расширяемые строковые данные (в виде списка шестнадцатеричных значений, разделенных запятыми, представляющих строку UTF-16LE с завершающим символом NUL)> "Значение G" = hex(3):<Двоичные данные (в виде список шестнадцатеричных значений, разделенных запятыми)> ; равно "Значению B" "Значение H" = hex(4):<значение DWORD (как список из 4 шестнадцатеричных значений, разделенных запятыми, в порядке байтов от младшего к старшему)> "Значение I" = hex(5):<значение DWORD (как список из 4 шестнадцатеричных значений, разделенных запятыми, в порядке байтов от старшего к младшему)> "Значение J" = hex(7):<данные многострочного значения (как список шестнадцатеричных значений, разделенных запятыми, представляющих строки UTF-16LE с нулевым завершением)> "Значение K" = hex(8):<REG_RESOURCE_LIST (как список шестнадцатеричных значений, разделенных запятыми)> "Значение L" = hex(a):<REG_RESOURCE_REQUIREMENTS_LIST (как список шестнадцатеричных значений, разделенных запятыми)> "Значение M" = hex(b):<значение QWORD (в виде списка из 8 шестнадцатеричных значений, разделенных запятыми, в прямом порядке байтов)>

Данные из .REGфайлов можно добавлять/объединять с реестром, дважды щелкнув эти файлы или используя ключ /s в командной строке. REGФайлы также можно использовать для удаления данных реестра.

Чтобы удалить ключ (и все подключи, значения и данные), перед именем ключа должен стоять знак минус («-»). [26]

Например, чтобы удалить ключ HKLM\SOFTWARE\Foobar (и все его подразделы, значения и данные),

[ - HKEY_LOCAL_MACHINE \SOFTWARE\Foobar]

Чтобы удалить значение (и его данные), удаляемые значения должны иметь знак минус («-») после знака равенства («=»). [26]

Например, чтобы удалить только значения «Значение A» и «Значение B» (и их данные) из ключа HKLM\SOFTWARE\Foobar:

[ HKEY_LOCAL_MACHINE \SOFTWARE\Foobar] "Значение A" =- "Значение B" =-

Чтобы удалить только значение по умолчанию ключа HKLM\SOFTWARE\Foobar (и его данные):

[ HKEY_LOCAL_MACHINE \SOFTWARE\Foobar] @ =-

Строки, начинающиеся с точки с запятой, считаются комментариями:

; Это комментарий. Его можно разместить в любой части .reg-файла [ ​​HKEY_LOCAL_MACHINE \SOFTWARE\Foobar] "Значение" = "Пример строки"

Групповые политики

Групповые политики Windows могут изменять разделы реестра для ряда машин или отдельных пользователей на основе политик. Когда политика впервые вступает в силу для машины или отдельного пользователя машины, параметры реестра, указанные как часть политики, применяются к настройкам машины или пользователя.

Windows также будет искать обновленные политики и применять их периодически, обычно каждые 90 минут. [27]

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

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

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

Редактирование командной строки

Реестр можно изменять несколькими способами из командной строки . Инструменты Reg.exeи RegIni.exeутилиты включены в Windows XP и более поздние версии Windows. Альтернативные места для устаревших версий Windows включают компакт-диски Resource Kit или оригинальный установочный компакт-диск Windows.

Также .REGфайл можно импортировать из командной строки с помощью следующей команды:

Файл RegEdit.exe /s

/s означает, что файл будет тихо объединен с реестром. Если /sпараметр пропущен, пользователю будет предложено подтвердить операцию. В Windows 98, Windows 95 и, по крайней мере, в некоторых конфигурациях Windows XP /sпереключатель также заставляет RegEdit.exeигнорировать настройку в реестре, которая позволяет администраторам отключать его. При использовании переключателя /sне RegEdit.exeвозвращает соответствующий код возврата, если операция завершается неудачей, в отличие от Reg.exeтого, который возвращает.

RegEdit.exe /e файл

экспортирует весь реестр в формате V5 в .REGфайл UNICODE, в то время как любой из

RegEdit.exe /e файл HKEY_CLASSES_ROOT[\<ключ>]RegEdit.exe /e файл HKEY_CURRENT_CONFIG[\<ключ>]RegEdit.exe /e файл HKEY_CURRENT_USER[\<ключ>]RegEdit.exe /e файл HKEY_LOCAL_MACHINE[\<ключ>]RegEdit.exe /e файл HKEY_USERS[\<ключ>]

экспортировать только указанный (под)ключ (который должен быть заключен в кавычки, если он содержит пробелы).

RegEdit.exe / файл

экспортирует весь реестр в формате V4 в .REGфайл ANSI.

RegEdit.exe /a файл  <ключ>

экспортирует только указанный (под)ключ (который должен быть заключен в кавычки, если он содержит пробелы).

Также можно использовать Reg.exe. Вот пример отображения значения параметра реестра Version:

Reg.exe ЗАПРОС HKLM\Software\Microsoft\ResKit /v Версия

Другие параметры командной строки включают VBScript или JScript вместе с CScript , WMI или WindowsWMIC.exe PowerShell .

Разрешения реестра можно изменять через командную строку с помощью RegIni.exeи SubInACL.exeинструмента. Например, разрешения на ключ HKEY_LOCAL_MACHINE\SOFTWARE можно отобразить с помощью:

SubInACL.exe /keyreg HKEY_LOCAL_MACHINE\SOFTWARE /display

Команды и скрипты PowerShell

Использование PowerShell для навигации по реестру

Windows PowerShell поставляется с поставщиком реестра, который представляет реестр как тип расположения, аналогичный файловой системе. Те же команды, которые используются для управления файлами и каталогами в файловой системе, могут использоваться для управления ключами и значениями реестра. [28]

Также как и файловая система, PowerShell использует концепцию текущего местоположения , которая определяет контекст, в котором по умолчанию работают команды. Get-ChildItem(также доступно через псевдонимы ls, dirили gci) извлекает дочерние ключи текущего местоположения. Используя команду Set-Location(или псевдоним cd), пользователь может изменить текущее местоположение на другой ключ реестра. [28] Команды, которые переименовывают элементы, удаляют элементы, создают новые элементы или устанавливают содержимое элементов или свойств, могут использоваться для переименования ключей, удаления ключей или целых поддеревьев или изменения значений.

С помощью файлов сценариев PowerShell администратор может подготовить сценарии, которые при выполнении вносят изменения в реестр. Такие сценарии могут быть распространены среди администраторов, которые могут выполнять их на отдельных машинах. Поставщик PowerShell Registry поддерживает транзакции, то есть несколько изменений в реестре могут быть объединены в одну атомарную транзакцию. Атомарная транзакция гарантирует, что либо все изменения будут зафиксированы в базе данных, либо, если сценарий не сработает, ни одно из изменений не будет зафиксировано в базе данных. [28] [29]

Программы или скрипты

Реестр можно редактировать через API библиотеки Advanced Windows 32 Base API (advapi32.dll). [30] Список функций API реестра:

Многие языки программирования предлагают встроенные функции или классы библиотеки времени выполнения , которые оборачивали базовые API Windows и тем самым позволяли программам сохранять настройки в реестре (например, в VB.NET и C# или в Delphi и Free Pascal ). Приложения с поддержкой COM , такие как Visual Basic 6, могут использовать объект WSH . Другой способ — использовать Windows Resource Kit Tool, выполняя его из кода, [31], хотя это считается плохой практикой программирования.Microsoft.Win32.RegistryTRegistry WScript.ShellReg.exe

Аналогично, такие языки сценариев, как Perl (с Win32::TieRegistry), Python (с winreg), TCL (который поставляется в комплекте с пакетом реестра), [32] Windows Powershell и Windows Scripting Host также позволяют редактировать реестр из скриптов.

Редактирование в автономном режиме

Файл offreg.dll [33], доступный в комплекте драйверов Windows, предлагает набор API для создания и обработки не загруженных в данный момент кустов реестра, аналогичных тем, которые предоставляет advapi32.dll.

Также возможно редактировать реестр (участки) автономной системы из Windows PE или Linux (в последнем случае с использованием инструментов с открытым исходным кодом ).

Самостоятельная регистрация COM

До введения COM без регистрации разработчикам предлагалось добавлять код инициализации в двоичные файлы in-process и out-of-process для выполнения конфигурации реестра, необходимой для работы этого объекта. Для двоичных файлов in-process, таких как файлы .DLL и .OCX, модули обычно экспортировали функцию DllInstall() [34] , которую можно было вызывать программами установки или вручную с помощью утилит, таких как Regsvr32.exe; [35] двоичные файлы out-of-process обычно поддерживают аргументы командной строки /Regserver и /Unregserver, которые создавали или удаляли требуемые параметры реестра. [36] Приложения COM, которые выходят из строя из-за проблем DLL Hell , обычно можно восстановить с помощью RegSvr32.exe или переключателя /RegServer без необходимости повторного вызова программ установки. [37]

Расширенная функциональность

Windows предоставляет API, которые позволяют приложениям пользовательского режима регистрироваться для получения уведомлений об изменении определенного ключа реестра. [38] Также доступны API, позволяющие приложениям режима ядра фильтровать и изменять вызовы реестра, выполняемые другими приложениями. [39]

Windows также поддерживает удаленный доступ к реестру другого компьютера через RegConnectRegistryфункцию [40] , если служба удаленного реестра запущена, правильно настроена и ее сетевой трафик не защищен брандмауэром. [41]

Безопасность

Каждый ключ в реестре версий Windows NT может иметь связанный с ним дескриптор безопасности . Дескриптор безопасности содержит список управления доступом (ACL) , который описывает, каким группам пользователей или отдельным пользователям предоставлены или запрещены разрешения на доступ. Набор разрешений реестра включает 10 прав/разрешений, которые могут быть явно разрешены или запрещены пользователю или группе пользователей.

Как и в случае с другими защищаемыми объектами в операционной системе, отдельные записи управления доступом (ACE) в дескрипторе безопасности могут быть явными или унаследованными от родительского объекта. [42]

Защита ресурсов Windows — это функция Windows Vista и более поздних версий Windows, которая использует систему безопасности для запрета администраторам и системе доступа WRET к некоторым конфиденциальным ключам с целью защиты целостности системы от вредоносных программ и случайных изменений. [43]

Специальные ACE в дескрипторе безопасности также могут реализовывать обязательный контроль целостности для раздела реестра и подразделов. Процесс, работающий на более низком уровне целостности, не может записывать, изменять или удалять раздел/значение реестра, даже если учетной записи процесса был предоставлен доступ через ACL. Например, Internet Explorer, работающий в защищенном режиме, может читать разделы/значения реестра средней и низкой целостности текущего вошедшего в систему пользователя, но он может изменять только ключи низкой целостности. [44]

За пределами безопасности ключи реестра не могут быть удалены или отредактированы по другим причинам. Ключи реестра, содержащие символы NUL, не могут быть удалены стандартными редакторами реестра и требуют специальной утилиты для удаления, например RegDelNull. [45] [46]

Резервное копирование и восстановление

На протяжении многих лет различные редакции Windows поддерживали ряд различных методов резервного копирования и восстановления реестра, некоторые из которых сейчас устарели:

Политика

Групповая политика

Windows 2000 и более поздние версии Windows используют групповую политику для принудительного применения параметров реестра с помощью клиентского расширения реестра в механизме обработки групповой политики. [52] Политика может быть применена локально к одному компьютеру с помощью gpedit.mscили к нескольким пользователям и компьютерам в домене с помощью gpmc.msc.

Устаревшие системы

В Windows 95, Windows 98, Windows ME и Windows NT 4.0 администраторы могут использовать специальный файл для объединения с реестром, называемый файлом политики ( POLICY.POL). Файл политики позволяет администраторам запрещать пользователям, не являющимся администраторами, изменять параметры реестра, например, уровень безопасности Internet Explorer и фоновый рисунок рабочего стола. Файл политики в основном используется в бизнесе с большим количеством компьютеров, где бизнес должен быть защищен от мошенников или неосторожных пользователей.

Расширение по умолчанию для файла политики — .POL. Файл политики фильтрует применяемые им настройки по пользователю и группе («группа» — это определенный набор пользователей). Для этого файл политики объединяется с реестром, не позволяя пользователям обойти его, просто вернув настройки обратно. Файл политики обычно распространяется по локальной сети, но может быть размещен на локальном компьютере.

Файл политики создается бесплатным инструментом Microsoft, который называется filename poledit.exeдля Windows 95/Windows 98 и имеет модуль управления компьютером для Windows NT. Редактор требует административных разрешений для запуска в системах, использующих разрешения. Редактор также может напрямую изменять текущие параметры реестра локального компьютера, и если удаленная служба реестра установлена ​​и запущена на другом компьютере, он также может изменять реестр на этом компьютере. Редактор политики загружает параметры, которые он может изменить, из .ADMфайлов, один из которых включен, содержащий параметры, предоставляемые оболочкой Windows. Файл .ADMпредставляет собой простой текст и поддерживает простую локализацию, позволяя хранить все строки в одном месте.

Виртуализация

Виртуализация INI-файла

Ядра Windows NT поддерживают перенаправление API , связанных с файлами INI, в виртуальный файл в реестре, например, HKEY_CURRENT_USER, с помощью функции под названием «InifileMapping». [53] Эта функциональность была введена для того, чтобы позволить устаревшим приложениям, написанным для 16-разрядных версий Windows, работать на платформах Windows NT, на которых папка System больше не считается подходящим местом для пользовательских данных или конфигурации. Несовместимые 32-разрядные приложения также могут быть перенаправлены таким образом, хотя изначально эта функция предназначалась для 16-разрядных приложений.

Виртуализация реестра

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

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

Процессы с низкой степенью целостности также могут использовать виртуализацию реестра. Например, Internet Explorer 7 или 8, работающий в «защищенном режиме» на Windows Vista и выше, автоматически перенаправляет записи в реестр элементами управления ActiveX в изолированное местоположение, чтобы помешать некоторым классам эксплойтов безопасности .

Набор инструментов для обеспечения совместимости приложений [54] предоставляет оболочки , которые могут прозрачно перенаправлять операции реестра HKEY_LOCAL_MACHINE или HKEY_CLASSES_ROOT в HKEY_CURRENT_USER для устранения ошибок « LUA », из-за которых приложения не работают у пользователей с недостаточными правами.

Недостатки

Критики назвали реестр в Windows 95 единой точкой отказа , поскольку при повреждении реестра требовалась переустановка операционной системы. Однако Windows NT использует журналы транзакций для защиты от повреждения во время обновлений. Текущие версии Windows используют два уровня файлов журналов для обеспечения целостности даже в случае сбоя питания или подобных катастрофических событий во время обновлений базы данных. [55] Даже в случае неустранимой ошибки Windows может восстановить или повторно инициализировать поврежденные записи реестра во время загрузки системы. [55]

Эквиваленты и альтернативы

В Windows использование реестра для хранения данных программы является вопросом усмотрения разработчика. Microsoft предоставляет программные интерфейсы для хранения данных в XML- файлах (через MSXML ) или файлах баз данных (через SQL Server Compact ), которые разработчики могут использовать вместо этого. Разработчики также могут свободно использовать альтернативы, не принадлежащие Microsoft, или разрабатывать собственные хранилища данных.

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

Смотрите также

Примечания

  1. ^ Когда приложения не выполняются из-за того, что они запрашивают больше привилегий, чем им необходимо (и им отказывают в этих привилегиях), это называется ошибкой приложения с ограниченными правами пользователя (LUA).

Сноски

  1. ^ Эспозито, Дино (ноябрь 2000 г.). «Реестр Windows 2000: новейшие функции и API предоставляют возможности настройки и расширения ваших приложений». Журнал MSDN . Microsoft. Архивировано из оригинала 15 апреля 2003 г. Получено 19 июля 2007 г.
  2. ^ abc «Системный реестр».
  3. ^ "Windows 95 Architecture Components". www.microsoft.com . Архивировано из оригинала 7 февраля 2008 г. . Получено 29 апреля 2008 г. В следующей таблице показаны другие трудности или ограничения, вызванные использованием файлов .INI, которые преодолеваются с помощью реестра.
  4. ^ Хипсон 2002, стр. 5, 41–43.
  5. ^ Рихтер, Джеффри; Назар, Кристоф (2008). Windows через C/C++ (Пятое изд.). Майкрософт Пресс . ISBN 9780735642461. Получено 28 августа 2021 г. .
  6. ^ Рэймонд Чен , «Почему ключи реестра имеют значение по умолчанию?»
  7. ^ Хипсон 2002, стр. 207, 513–514.
  8. ^ Хипсон 2002, стр. 520–521.
  9. ^ Хипсон 2002, стр. 7.
  10. ^ "Designed for Windows XP Application Specification". Microsoft . 20 августа 2002 г. Получено 8 апреля 2009 г.
  11. ^ "HKEY_LOCAL_MACHINE". Gautam. 2009. Получено 8 апреля 2009 г.
  12. ^ "Ключи реестра, затронутые WOW64 (Windows)". Msdn.microsoft.com . Получено 10 апреля 2014 г. .
  13. ^ "Описание реестра Microsoft Windows" . Получено 25 сентября 2008 г. .
  14. ^ "HKEY_CURRENT_USER". Microsoft . 2009 . Получено 8 апреля 2009 г. .
  15. ^ «Описание раздела реестра HKEY_DYN_DATA в Windows 95, Windows 98 и Windows 98 SE». support.microsoft.com .
  16. ^ "Более подробный взгляд на HKEY_DYN_DATA". rinet.ru . Архивировано из оригинала 9 мая 2008 г.
  17. ^ "Registry hives" . Получено 19 июля 2007 г. .
  18. ^ Чен, Рэймонд (8 августа 2011 г.). «Почему файл реестра называется «ульем»?». The Old New Thing . Получено 29 июля 2011 г. .
  19. ^ "Обзор реестра Windows NT" . Получено 2 декабря 2011 г. .
  20. ^ "Внутри реестра" . Получено 28 декабря 2007 г.
  21. ^ ab Норрис, Питер (февраль 2009 г.). "Внутренняя структура реестра Windows" (PDF) . Университет Крэнфилда. Архивировано из оригинала (PDF) 29 мая 2009 г.
  22. ^ "Неправильные значки отображаются для файлов .ico". 15 ноября 2009 г. Получено 31 марта 2012 г.
  23. ^ «Как полностью удалить программу в Windows без использования стороннего программного обеспечения? - AskVG». www.askvg.com . 26 августа 2011 г.
  24. ^ "Вы можете получить сообщение об ошибке "STOP 0x00000035 NO_MORE_IRP_STACK_LOCATIONS" при попытке входа в домен". 9 октября 2011 г. Получено 31 марта 2012 г.На этой странице пользователю предлагается отредактировать реестр при решении проблемы.
  25. ^ Переименование ключей реализовано как удаление и добавление с сохранением подключаемых ключей/значений, поскольку базовые API не поддерживают функцию переименования напрямую
  26. ^ abcde «Как добавлять, изменять или удалять подразделы и значения реестра с помощью файла .reg». support.microsoft.com .
  27. ^ «Применение групповой политики». Microsoft.
  28. ^ abc Payette, Bruce; Siddaway, Richard (2018). Windows PowerShell в действии (третье изд.). Manning Publications . стр. 7–8, 24, 608, 708–710. ISBN 9781633430297. Получено 28 августа 2021 г. .
  29. ^ Уорнер, Тимоти Л. (май 2015 г.). Windows PowerShell за 24 часа, Sams Teach Yourself. Sams Publishing . стр. 19, 211. ISBN 9780134049359. Получено 28 августа 2021 г. .
  30. ^ "Чтение и запись значений реестра с помощью Visual Basic" . Получено 19 июля 2007 г.
  31. ^ "Команда REG в Windows XP" . Получено 19 июля 2007 г.
  32. ^ "страница руководства по реестру – Tcl Bundled Packages". www.tcl.tk . Получено 14 декабря 2017 г. .
  33. ^ "Offline Registry Library" . Получено 4 июня 2014 г. .
  34. ^ "DllInstall Function". Microsoft . 7 марта 2012 г. Получено 22 марта 2012 г.
  35. ^ "Regsvr32". Microsoft . Получено 22 марта 2012 г. .
  36. ^ "Как: зарегистрировать серверы автоматизации". Microsoft . Получено 22 марта 2012 г. .
  37. ^ "Как перерегистрировать PowerPoint 2000, PowerPoint 2003, PowerPoint 2007 и PowerPoint 2010". Microsoft . Январь 2012 . Получено 22 марта 2012 .
  38. ^ "Функция RegNotifyChangeKeyValue". Microsoft.
  39. ^ «Регистрация для уведомлений». Microsoft.
  40. ^ "Функция RegConnectRegistry". Microsoft.
  41. ^ «Как управлять удаленным доступом к реестру». Microsoft.
  42. ^ Гибсон, Даррил (28 июня 2011 г.). «Глава 4: Защита доступа с помощью разрешений». Безопасность Microsoft Windows: основы . Индианаполис, Индиана: Wiley. ISBN 978-1-118-01684-8.
  43. ^ "Совместимость приложений: Windows Resource Protection (WRP)". Microsoft . Получено 8 августа 2012 г. .
  44. ^ Марк Силбей, Питер Брандретт. «Понимание и работа в защищенном режиме Internet Explorer» . Получено 8 августа 2012 г.
  45. ^ "RegDelNull v1.1". 1 ноября 2006 г. Получено 8 августа 2012 г.
  46. ^ «Невозможно удалить определенные ключи реестра – Ошибка при удалении ключа». 23 марта 2010 г. Получено 8 августа 2012 г.Страница поддержки Microsoft.
  47. ^ «Описание средства проверки реестра Windows (Scanreg.exe)».
  48. ^ «Параметры командной строки для инструмента проверки реестра».
  49. ^ «Как сделать резервную копию, отредактировать и восстановить реестр в Windows NT 4.0». support.microsoft.com .
  50. ^ "Технический справочник по реестру: Связанные ресурсы". Microsoft . Получено 9 сентября 2011 г. .
  51. ^ Whitwam, Ryan (июль 2019 г.). «Microsoft убивает автоматическое резервное копирование реестра в Windows 10». ExtremeTech . Получено 1 июля 2019 г. .
  52. ^ "Как работает основная групповая политика". Microsoft . 2 сентября 2009 г. Получено 13 августа 2012 г.
  53. ^ "Глава 26 – Файлы инициализации и реестр". Microsoft . Получено 3 марта 2008 г. .
  54. ^ "Microsoft Application Compatibility Toolkit 5.0". Microsoft . Получено 26 июля 2008 г. .
  55. ^ ab Ionescu, Mark Russinovich, David A. Solomon, Alex (2012). «Registry Internals». Windows internals (6-е изд.). Redmond, Washington.: Microsoft Press. ISBN 978-0-7356-4873-9.{{cite book}}: CS1 maint: несколько имен: список авторов ( ссылка )
  56. ^ "Спецификация базового каталога XDG". standards.freedesktop.org .
  57. ^ "Каталоги приложений". Архивировано из оригинала 27 мая 2012 г. Получено 17 мая 2012 г.
  58. ^ ab "Исследования 132 основных проблем с операционными системами, отличными от RISC OS" . Получено 3 апреля 2012 г.Страница с сайта riscos.com. Упоминается в пунктах 82 и 104.
  59. ^ "RISC OS tour" . Получено 19 июля 2007 г. .
  60. ^ "The RISC OS Products Directory". 2 ноября 2006 г. Архивировано из оригинала 19 февраля 2007 г. Получено 1 апреля 2012 г.
  61. ^ 3.2. Использование реестра и Regedit (Руководство пользователя Wine)

Ссылки

Внешние ссылки