stringtranslate.com

Реестр Windows

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

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

Реестр Windows, представленный в Windows 3.1 , в основном хранил информацию о конфигурации для компонентов на основе 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» подраздела «Программное обеспечение» корневого ключа HKEY_LOCAL_MACHINE.

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

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

Значения реестра — это пары имя/данные, хранящиеся в ключах. Значения реестра упоминаются отдельно от ключей реестра. Каждое значение реестра, хранящееся в разделе реестра, имеет уникальное имя, регистр букв которого не имеет значения. Функции Windows API , которые запрашивают значения реестра и манипулируют ими, принимают имена значений отдельно от пути к ключу или дескриптора, идентифицирующего родительский ключ. Значения реестра могут содержать обратную косую черту в своих именах, но из-за этого их трудно отличить от путей к ключам при использовании некоторых устаревших функций 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\Vendor's name\Application's name\Version\Setting name», а если параметр не найден, вместо этого посмотрите в том же месте под ключом HKEY_LOCAL_MACHINE. Однако обратное может применяться к настройкам политики , налагаемым администратором , где HKLM может иметь приоритет над HKCU. Программа логотипа Windows предъявляет особые требования к тому, где могут храниться различные типы пользовательских данных, а также к соблюдению концепции минимальных привилегий , чтобы для использования приложения не требовался доступ на уровне администратора. [а] [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) соответствует SID Windows ; если ключ «(HKCU)» имеет следующий суффикс «(HKCU)\Software\Classes\...», то он соответствует «(HKU)\(SID)_CLASSES\...», т.е. строке суффикса «_CLASSES» добавляется к (SID).
В системах Windows NT настройки каждого пользователя хранятся в отдельных файлах с именами NTUSER.DAT и USRCLASS.DAT в их собственной подпапке «Документы и настройки» (или в собственной подпапке «Пользователи» в Windows Vista и выше). Настройки в этом кусте следуют за пользователями с перемещаемым профилем от компьютера к компьютеру.

HKEY_PERFORMANCE_DATA

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

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 НТ

Системы 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>\.

Windows 3.11

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

Windows 10 Мобильная

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

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

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

Примечание. InterOp Tools также включает в себя редактор реестра.

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

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

Реестр содержит важную информацию о конфигурации операционной системы, установленных приложений, а также индивидуальные настройки для каждого пользователя и приложения. Неосторожное изменение конфигурации операционной системы в реестре может привести к необратимому повреждению, поэтому обычно только программы установки вносят изменения в базу данных реестра во время установки/настройки и удаления. Если пользователь хочет редактировать реестр вручную, 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 версии 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]

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

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

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

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

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

Редактор реестра Windows версии 5.00[ HKEY_LOCAL_MACHINE \SOFTWARE\Foobar] "Value A" = "<Данные строкового значения с escape-символами>" "Value B" = hex:<Двоичные данные (как список шестнадцатеричных значений, разделенных запятыми)> "Value C" = dword: <Целое значение DWORD> «Значение D» = hex(0):<REG_NONE (как список шестнадцатеричных значений, разделенных запятыми)> «Значение E» = hex(1):<REG_SZ (как список шестнадцатеричных значений, разделенных запятыми, представляющих строка с завершающим нулем UTF-16LE)> "Значение F" = hex(2):<Данные расширяемого строкового значения (в виде списка шестнадцатеричных значений, разделенных запятыми, представляющих строку с завершающим нулем UTF-16LE)> "Значение G" = hex(3):<Двоичные данные (как список шестнадцатеричных значений, разделенных запятыми)> ; равно "Значение B" "Значение H" = hex(4):<значение DWORD (в виде списка из 4 шестнадцатеричных значений, разделенных запятыми, в порядке байтов с прямым порядком байтов)> "Значение I" = hex(5):<значение DWORD (в виде списка из 4 шестнадцатеричных значений, разделенных запятыми, в порядке байтов с обратным порядком байтов)> «Значение J» = hex(7):<данные многострочного значения (в виде списка шестнадцатеричных значений, разделенных запятыми, представляющих UTF-16LE с нулевым завершением strings)> "Value 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/ файл  <ключ>

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

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

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 поддерживает транзакции, т. е. несколько изменений в реестре могут быть объединены в одну атомарную транзакцию. Атомарная транзакция гарантирует, что либо все изменения будут зафиксированы в базе данных, либо, в случае сбоя сценария, ни одно из изменений не будет зафиксировано в базе данных. [28] [29]

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

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

Многие языки программирования предлагают встроенные функции или классы библиотеки времени выполнения , которые обертывают базовые API-интерфейсы Windows и тем самым позволяют программам сохранять настройки в реестре (например, в VB.NET и C# или в Delphi и Free Pascal ). Приложения с поддержкой COM , такие как Visual Basic 6, могут использовать объект WSH . Другой способ — использовать инструмент Windows Resource Kit, запустив его из кода [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 без регистрации разработчикам предлагалось добавлять код инициализации во внутрипроцессные и внепроцессные двоичные файлы для выполнения конфигурации реестра, необходимой для работы этого объекта. Для внутрипроцессных двоичных файлов, таких как файлы .DLL и .OCX, модули обычно экспортировали функцию DllInstall() [34] , которую можно было вызывать программами установки или вызывать вручную с помощью таких утилит, как Regsvr32.exe; [35] Внепроцессные двоичные файлы обычно поддерживают аргументы командной строки /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, которая использует систему безопасности, чтобы запретить администраторам и системе доступ ЗАПИСЬ к некоторым конфиденциальным ключам, чтобы защитить целостность системы от вредоносных программ и случайных модификаций. [43]

Специальные элементы управления доступом в дескрипторе безопасности также могут реализовать обязательный контроль целостности ключа и подразделов реестра. Процесс, работающий на более низком уровне целостности, не может записывать, изменять или удалять ключ/значение реестра, даже если учетной записи процесса в противном случае был предоставлен доступ через 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, который имеет имя файла 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, на которых системная папка больше не считается подходящим местом для хранения пользовательских данных или конфигурации. Несовместимые 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 ), которые вместо этого могут использовать разработчики. Разработчики также могут использовать альтернативы сторонних производителей или разрабатывать собственные хранилища данных.

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

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

Примечания

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

Сноски

  1. ^ Эспозито, Дино (ноябрь 2000 г.). «Реестр Windows 2000: новейшие функции и API-интерфейсы, позволяющие настраивать и расширять ваши приложения». Журнал MSDN . Майкрософт. Архивировано из оригинала 15 апреля 2003 года . Проверено 19 июля 2007 г.
  2. ^ abc «Системный реестр».
  3. ^ «Компоненты архитектуры Windows 95» . 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. ^ «Разработано для спецификации приложений Windows XP» . Майкрософт . 20 августа 2002 года . Проверено 8 апреля 2009 г.
  11. ^ "HKEY_LOCAL_MACHINE". Гаутама. 2009 . Проверено 8 апреля 2009 г.
  12. ^ «Ключи реестра, на которые влияет WOW64 (Windows)» . Msdn.microsoft.com . Проверено 10 апреля 2014 г.
  13. ^ «Описание реестра Microsoft Windows» . Проверено 25 сентября 2008 г.
  14. ^ "HKEY_CURRENT_USER". Майкрософт . 2009 . Проверено 8 апреля 2009 г.
  15. ^ «Описание ключа реестра HKEY_DYN_DATA в Windows 95, Windows 98 и Windows 98 SE» . support.microsoft.com .
  16. ^ «Более внимательный взгляд на HKEY_DYN_DATA» . Ринет.ру . Архивировано из оригинала 9 мая 2008 года.
  17. ^ "Ульи реестра" . Проверено 19 июля 2007 г.
  18. Чен, Раймонд (8 августа 2011 г.). «Почему файл реестра называется «ульем»?». Старая новая вещь . Проверено 29 июля 2011 г.
  19. ^ «Обзор реестра Windows NT» . Проверено 2 декабря 2011 г.
  20. ^ «Внутри реестра» . Проверено 28 декабря 2007 г.
  21. ^ Аб Норрис, Питер (февраль 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. ^ «Применение групповой политики». Майкрософт.
  28. ^ abc Пайетт, Брюс; Сиддэуэй, Ричард (2018). Windows PowerShell в действии (Третье изд.). Публикации Мэннинга . стр. 7–8, 24, 608, 708–710. ISBN 9781633430297. Проверено 28 августа 2021 г.
  29. ^ Уорнер, Тимоти Л. (май 2015 г.). Windows PowerShell за 24 часа, Сэмс научит себя. Издательство Самс . п. 19, 211. ISBN 9780134049359. Проверено 28 августа 2021 г.
  30. ^ «Чтение и запись значений реестра с помощью Visual Basic» . Проверено 19 июля 2007 г.
  31. ^ «Команда REG в Windows XP» . Проверено 19 июля 2007 г.
  32. ^ «Страница руководства по реестру - Пакеты Tcl» . www.tcl.tk. _ Проверено 14 декабря 2017 г.
  33. ^ «Библиотека автономного реестра» . Проверено 4 июня 2014 г.
  34. ^ «Функция DllInstall». Майкрософт . 7 марта 2012 года . Проверено 22 марта 2012 г.
  35. ^ "Регсвр32" . Майкрософт . Проверено 22 марта 2012 г.
  36. ^ «Как зарегистрировать серверы автоматизации» . Майкрософт . Проверено 22 марта 2012 г.
  37. ^ «Как перерегистрировать PowerPoint 2000, PowerPoint 2003, PowerPoint 2007 и PowerPoint 2010» . Майкрософт . Январь 2012 года . Проверено 22 марта 2012 г.
  38. ^ «Функция RegNotifyChangeKeyValue» . Майкрософт.
  39. ^ «Регистрация для получения уведомлений». Майкрософт.
  40. ^ «Функция RegConnectRegistry» . Майкрософт.
  41. ^ «Как управлять удаленным доступом к реестру». Майкрософт.
  42. Гибсон, Дэррил (28 июня 2011 г.). «Глава 4: Защита доступа с помощью разрешений». Безопасность Microsoft Windows: основы . Индианаполис, Индиана: Уайли. ISBN 978-1-118-01684-8.
  43. ^ «Совместимость приложений: защита ресурсов Windows (WRP)» . Майкрософт . Проверено 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. ^ «Технический справочник по реестру: сопутствующие ресурсы» . Майкрософт . Проверено 9 сентября 2011 г.
  51. ^ Уитвам, Райан (июль 2019 г.). «Microsoft прекращает автоматическое резервное копирование реестра в Windows 10». ЭкстримТех . Проверено 1 июля 2019 г.
  52. ^ «Как работает основная групповая политика» . Майкрософт . 2 сентября 2009 года . Проверено 13 августа 2012 г.
  53. ^ «Глава 26 – Файлы инициализации и реестр». Майкрософт . Проверено 3 марта 2008 г.
  54. ^ «Набор средств совместимости приложений Microsoft 5.0» . Майкрософт . Проверено 26 июля 2008 г.
  55. ^ аб Ионеску, Марк Руссинович, Дэвид А. Соломон, Алекс (2012). «Внутреннее устройство реестра». Внутренние устройства Windows (6-е изд.). Редмонд, Вашингтон: 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» . Проверено 3 апреля 2012 г.Страница с сайта riscos.com. Упоминается в пунктах 82 и 104.
  59. ^ "Тур по RISC OS" . Проверено 19 июля 2007 г.
  60. ^ «Каталог продуктов ОС RISC» . 2 ноября 2006 года. Архивировано из оригинала 19 февраля 2007 года . Проверено 1 апреля 2012 г.
  61. ^ 3.2. Использование реестра и Regedit (Руководство пользователя Wine)

Рекомендации

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