Глава 19. Устранение неисправностей реестра

Реестр это то, что всегда отличало Windows от прочих операционных систем; фактически, только Windows выполняет дела при помощи Реестра. В то время как основанные на Unix операционные системы, такие как Linux, Android и Mac OS пользуются последовательностями папок подобных /etc, которые содержат файлы настроек для своей операционной системы и устанавливаемых приложений, Реестр Windows составляется из последовательности двоичных файлов баз данных.

Вы можете подумать чтобы быть более действенным, это превратит Реестр в более безопасный по сравнению с подходом Unix, при котором многие файлы настроек доступны для чтения в обычном текстовом виде, в то время как подход Реестра "безопасность через незаметность", как говорил Q из фильма про Джеймса Бонда Скайфол (хотя сейчас он говорил это не про Реестр; Эд).

К сожалению, в то время как базовая безопасность в системах Unix, где пользователь не обладает правами администрирования, достаточно эффективна, почти кто угодно способен открывать, считывать и даже удалять файл Реестра если тот попадёт ему на глаза. Это означает, что поскольку эти файлы открыты в общей файловой системе, они предрасположены к порче, несанкционированным изменениям и заражению вредоносным ПО. Итак, что же представляет собой Реестр и как мы можем им управлять и устранять в нём неисправности?

Ульи реестра

Реестр составляется из последовательности двоичных баз данных которые, как я уже упоминал, хранятся в различных местах вашего ПК. Основное хранилище Реестра, также именуемое Ульями (Hives, когда Реестр пребывал в процессе разработки Windows NT, работавший над ним персонал был фанатами пчёл, а потому они обставляли это стольким количеством ссылок как пчёл, сколько только мог, обзывая файлы Реестра "Ульями" и сохраняя данные в "сотах" - cell), это папка %SYSTEMROOT%\System32\Config (см. Рисунок 19.1), в которой можно найти приводимые ниже файлы.

 

Рисунок 19.1


Файлы ядра Реестра расположены в папке Windows/System32

  • SAM- Security Accounts Manager (Диспетчер безопасности учётных записей) содержит сведения о сетевых доменах, к которым подключён данный ПК и хранит значение имени пользователя, уникального идентификатора для этого домена, местоположения соответствующего улья Реестра, а также значения пароля пользователя в виде зашифрованного хэша. SAM представляется пустым пока пользователь не обладает надлежащими правами администратора.

  • SECURITY- Содержит настройки и политики безопасности подключённого к домену пользователя. SECURITY представляется пустым пока пользователь не обладает надлежащими правами администратора.

  • SOFTWARE- Содержит ключи для текущих установки Windows, а также установленного программного обеспечения и прикладных приложений. Ключи организованы по названиям производителей.

  • SYSTEM- Содержит относящиеся к настройке Windows, установкам, конфигурации по умолчанию ключи, а также подробности всех смонтированных и подключённых в настоящее время устройствах и драйверах.

  • DEFAULT- содержит сведения и ключи конфигурации системы по умолчанию.

  • HARDWARE- Не хранится в виде файла, но создаётся каждый раз при запуске данного ПК и уничтожается когда этот ПК выключается.

  • DRIVERS- Также создаётся при старте данного ПК и уничтожается при останове.

  • Userdiff (Используется только при обновлении ОС)

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

  • %USERPROFILE%\ntuser.dat- Содержит профиль пользователя, индивидуальные настройки, а также установки и опции конфигурации.

  • %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat- Содержит дополнительные настройки пользователя, такие как ассоциации с файлами, специфичные для этого пользователя.

Ключи и значения реестра

Записи внутри каждого Улья носят название ключей и значений (всё ясно: у разработчиков в этом месте истощился запас слов, относящихся к миру пчёл). Существует пять основных разделов, содержащих их, внутри файла Реестра.

 

HKEY_CLASSES_ROOT (HKCR)

Здесь хранятся ключи и значения для установленных приложений, включая ассоциации с файлами. Если сюда добавляются или вносятся изменения на ключи, также находящиеся в HKEY_CURRENT_USER, , тогда в качестве хозяина применяется HKCU.

 

HKEY_CURRENT_USER (HKCU)

Содержит варианты конфигураций для зарегистрированного в данный момент пользователя, включая местоположение Папок Оболочки пользователя (Shell Folders - Documents, Pictures и т.п.), Панели управления и прочих настроек, а также вариантов конфигураций приложений. Он доставляет их данные из файлов Реестра в папку %USERPROFILE%.

 

HKEY_LOCAL_MACHINE (HKLM)

Именно здесь вносится администраторами и конечными пользователями наибольшая часть изменений Реестра. Здесь находятся значения ключей для Windows, драйверов и установленных приложений. Это общие ключи и значения для всех пользователей данного ПК. В данном разделе загружены следующие улья Реестра:

  • SAM

  • SECURITY

  • SYSTEM

  • SOFTWARE

  • SOFTWARE

  • DRIVERS

 

HKEY_USERS (HKU)

Здесь содержатся настройки и параметры для зарегистрированного в настоящий момент пользователя, которые доставляются из улья Реестра NTUser.dat.

 

HKEY_CURRENT_CONFIG (HKCC)

Здесь содержатся вырабатываемые при запуске ПК сведения и они относятся только к текущему рабочему сеансу. При останове ПК они разрушаются.

 

HKEY_PERFORMANCE_DATA

Они скрыты в вашем Реестре и содержат производимые ядром Windows (файлами ядра ОС), драйверами, установленными приложениями и службами данные производительности. Эти данные относятся лишь к текущему сеансу и уничтожаются при выключении своего ПК.

Типы значений реестра

Внутри этих ключевых областей (плохая шутка, но я понял; Эд) имеются разные типы значений реестра. Вот они:

  • REG_BINARY хранящие необработанные двоичные данные ключи.

  • REG_DWORD 32- битные целые переменной длины.

  • DWORDS обычно применяются для определения параметров строк, настроек, драйверов и параметров конфигурации.

  • REG_SZ строковые значения длины поля

  • REG_EXPAND это строковые значения расширяемой длины, которые также используются для хранения переменных среды.

  • REG_MULTI_SZ это массивы нескольких строк, которые могут содержать список значений, обычно разделённых запятой или пробелом.

  • REG_RESOURCE_LIST список ресурсов во вложенном массиве; используется драйверами устройств.

  • REG_RESOURCE_REQUIREMENTS_LIST список массивов применяемых драйверами устройств аппаратных ресурсов.

  • REG_FULL_RESOURCE_DESCRIPTOR вложенные массивы, применяемые для хранения списков ресурсов физического оборудования. .

  • REG_LINK символические ссылки на прочие ключи Реестра. Они определяют как ключ корня, так и ключ цели.

  • REG_NONE данные с неопределённым типом.

  • REG_QWORD 64- битные целые переменной длины.

Важные места реестра

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

  • HKEY_CURRENT_USER ➤ Control Panel Именно здесь вы можете отыскать значения Реестра Панели управления, относящиеся ко вводу, доступности и проявлению на рабочем столе

  • HKEY_CURRENT_USER ➤ Software Это местоположение для настроек и конфигураций установленных прикладных приложений (обычно win32)

  • HKEY_CURRENT_USER ➤ Software ➤ Microsoft ➤ Windows ➤ CurrentVersion Здесь вы найдёте относящиеся к Windows настройки

  • HKEY_CURRENT_USER ➤ Software ➤ Microsoft ➤ Windows ➤ CurrentVersion ➤ Explorer Это местоположение для параметров настроек рабочего стола текущего пользователя, включая все важные папки Оболочки пользователя.

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

Windows содержит инструмент для управления и внесения изменений в Реестр, носящий название Редактора Реестра (см. Рисунок 19.2). Вы можете отыскать его осуществив поиск в меню Пуск или запуская regedit.exe из своей командной строки (что также работает в Среде восстановления Windows - Windows Recovery Environment).

 

Рисунок 19.2


Вы можете управлять Реестром при помощи Редактора Реестра

Здесь различные ульи и ключи Реестра организованы в древовидной иерархии, причём с доступными для клика стрелками вправо и вниз, которые позволяют вам раскрывать и закрывать индивидуальные разделы Реестра.

Из меню Edit вы можете копировать названия ключей Реестра и осуществлять поиск по Реестру. Вы также можете создавать новые ключи, которые также могут быть доступными для клика либо в правой, либо в левой панели данного редактора.

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

Вы имеете возможность резервного копирования ульев Реестра, его конкретных ключей или всего Реестра целиком в любой момент времени и это всегда будет хорошим практическим действием перед внесением изменений в Реестр. Это осуществляется из меню File при помощи вариантов Export Import после того как вы щёлкнули для выделения части Реестра для создания её резервной копии.

Для резервного копирования всего Реестра целиком кликните по Computer в самой верхней части левой панели и затем выберите из меню File Export. Когда вы импортируете ключ Реестра, вам не требуется иметь чем бы то ни было выбранным в левой панели, поскольку само местоположение того где и как хранится этот ключ улья будет внутри этого импортируемого файла.

 

Работа с файлами .REG

Ульи Реестра могут быть двоичной базой данных, однако когда вы экспортируете ключ, или даже весь Реестр целиком, он сохраняется в обычном тексте в виде файла .REG (см. Рисунок 19.3). Это даёт вам возможность запросто изменять ключи для реализации во множестве ПК или проверять и, быть может, изменять ключи, которые были отправлены или подлежат выгрузке через Интернет. Это может оказаться полезным из соображений поддержки основной безопасности.

 

Рисунок 19.3


Файлы .REG содержат версии простого текста вашего Реестра

Создание и изменение ключей реестра

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

 

Рисунок 19.4


Вы можете создавать новые ключи Реестра

Вы также обязаны пребывать в уверенности, что создаёте верный тип ключа, о которых я подробно писал ранее в данной главе в разделе Типы значений реестра. Если щёлкнуть правой кнопкой мыши и выбрать в контекстном меню New (Создать), появится всплывающее подчинённое меню в котором можно выбрать верный тип значения ключа.

Вы имеете возможность изменения значения либо правым кликом по нему и выбором Modify (Изменить), либо двойным кликом по самому значению. Это отобразит диалог, в котором вы можете изменить данное значение (см. Рисунок 19.5), но вы также способны способны изменять необработанные двоичные данные, которые необходимы для требующихся вам изменений.

 

Рисунок 19.5


Вы можете вносить изменения в значения Реестра

Редактирование ульев для иных пользователей в ПК

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

Выбрав в его левой панели HKEY_LOCAL_MACHINE или HKEY_USERS, откройте меню File и станет доступным параметр Load Hive. Чтобы отслеживать необходимый файл улья, вам понадобится в File Explorer (Проводнике) обладать видимыми Hidden files (скрытыми файлами). Затем вы получите запрос на необходимый Улей и это будет именно то название, которое появится в вашем Редакторе Реестра (см. Рисунок 19.6), в который я загрузил Улей для пользователя своего компьютера с именем "Jake".

 

Рисунок 19.6


Вы можете загружать необходимые ульи для прочих пользователей в своём ПК

Выбрав этот улей в левой панели вы затем можете выбрать из меню File Unload Hive когда вы завершите и пожелаете закрыть этот улей.

Редактирование ульев для иных ПК в сетевой среде

Когда вам требуется вносить изменения в улей Реестра для иного ПК в своей сетевой среде, либо для конкретного пользователя в одном из таких ПК, вы можете выбрать в меню File Connect Network Registry (см. Рисунок 19.7). Это позволит вам удалённо подключиться к необходимому ПК, как это было описано ранее в разделе Редактирование ульев для иных пользователей в ПК.

 

Рисунок 19.7


Вы можете подключаться к Реестрам прочих ПК в своей сетевой среде

 

Включение удалённого администрирования в ПК сетевой среды

Чтобы у вас имелась возможность подключения к необходимым Реестрам в ПК своей сетевой среды, вам сперва необходимо сделать несколько вещей. В редакторе Групповой политики, который находится в меню Пуск как gpedit, пройдите по Computer Configuration ➤ Administrative Templates ➤ Network ➤ Network Connections ➤ Windows Defender Firewall и затем выберите в качестве необходимого профиль Standard или Domain.

Попав туда, взгляните на правило Windows Defender Firewall: Allow inbound remote administration и разрешите его для всех ПК, к которым желаете получить удалённый доступ (см. Рисунок 19.8).

 

Рисунок 19.8


Вам необходимо внести изменение в правило Групповой политики Разрешения Удалённого администрирования

[Совет]Совет

Вы также можете разрешать или запрещать политику Удалённого администрирования из своей командной строки воспользовавшись командой netsh firewall set service type = remoteadmin mode = [mode], где [mode] это enable или disable.

Затем вам потребуется в своём Межсетевом экране (Firewall) Windows открыть порты 135 и 145. Отыщите в меню Пуск Firewall и откройте Windows Defender Windows Defender Firewall with Advanced Security with Advanced Security. Кликните по входящим правилам и затем в появившихся в правом верхнем окне параметрах создайте новое правило, в котором вы бы могли разрешить доступ по этим двум портам (см. Рисунок 19.9).

 

Рисунок 19.9


Вам необходимо открыть два порта в своём Межсетевом экране Windows

И последнее что вам необходимо сделать, это включить службу Удалённого Реестра. Отыщите в меню Пуск services и когда откроется панель Служб,отмотайте имеющийся перечень пока не появится Remote Registry (Удалённый Реестр). Вам понадобится установить для этой службы необходимое состояние в значение Automatic и затем запустите её (см. Рисунок 19.10).

 

Рисунок 19.10


В том ПК, в котором вы желаете осуществлять администрирование, вам потребуется активировать службу Удалённого Реестра

[Совет]Совет

Также у вас имеется возможность включения службы Удалённого Реестра из командной строки набрав sc start RemoteRegistry чтобы получить автоматический запуск данной службы при каждом запуске Windows. sc config RemoteRegistry start = auto.

Применение Редактора реестра из Консоли восстановления

Как я уже упоминал ранее в данной главе, Редактор Реестра может запускаться из Консоли восстановления Windows. Выберите Troubleshoot, потом Advanced Options, и, наконец, Command Prompt. Когда появится интерфейс Командной строки, наберите regedit и нажмите Enter (см. Рисунок 19.11).

 

Рисунок 19.11


У вас имеется возможность изменения Реестра из Консоли восстановления

При этом следует помнить, что на самом деле вы редактируете ульи Реестра для самой Консоли восстановления, а не для своего ПК. Это означает, что вам необходимо кликнуть HKEY_LOCAL_MACHINE или HKEY_USERS, а затем в меню File для загрузки улья Реестра своего ПК выбрать Load Hive.

[Замечание]Замечание

Из Консоли восстановления вы не можете воспользоваться Connect Network Registry, поскольку отсутствует поддержка сетевой среды.

REG.EXE и REGINI.EXE

Как и всё в Windows, её Реестр может изменяться и управляться при помощи сценариев. Естественно, существует PowerShell, о котором мы вкратце поговорим, но также имеются и инструменты командной строки reg.exe и regini.exe. Эти инструменты делают одно и то же, за исключением возможности regini запускать сценарии.

REG.EXE

Для манипуляции файлами Реестра Windows и их изменения существует 11 команд:

  • REG ADD для добавления записи в Реестр.

  • REG COMPARE для сопоставления двух различных записей Реестра, скажем, из HKCR и HKCU.

  • REG COPY применяется для копирования ключа Реестра в новое место в локальном или удалённом ПК.

  • REG DELETE для удаления ключа Реестра.

  • REG EXPORT для экспорта ключа, улья или всего Реестра.

  • REG IMPORT для импорта из резервной копии ключа, улья или всего Реестра.

  • REG LOAD для загрузки улья Реестра.

  • REG QUERY вернёт список подчинённых ключей и записей, расположенных в указанном месте Реестра.

  • REG RESTORE для запишет сохранённые подчинённые ключи обратно в Реестр.

  • REG SAVE сохранит копию указанных ключей в файл .reg.

  • REG UNLOAD выгрузит ранее загруженный улей Реестра.

В отличии от прочих инструментов Командной строки, каждая из представленных это команда сама по себе, что означает, что каждая из команд Reg.exe обладает отличающимися от прочих переключателями. Вместо того чтобы перечислять их все здесь и занимать этим следующие десять страниц, в то время как вы, скорее всего воспользуетесь Редактором Реестра или PowerShell, вы можете перейти по данной ссылке для получения полной информации на веб сайте Microsoft Docs.

REGINI.EXE

Regini работает с текстовыми файлами, содержащими команды,которые я подробно описывал ранее для Reg.exe и обладает собственной структурой команды. Применяйте Regini.exe в следующем формате


regini [-m \\pcname | -h hivefile hiveroot][-i n] [-o outputWidth][-b] textFiles...
 	   

где применяются такие переключатели:

  • -m \\pcname определяет название удалённого компьютера для подключения.

  • -h <hivefile hiveroot> указывает подлежащий изменению улей локального Реестра и корень для применяемого реестра.

  • -i <n> предписывает уровень отступа для применяемой древовидной структуры ключей Реестра в данной команде.

  • -o <outputwidth> задаёт значение ширины вывода команды в символах; по умолчанию это значение устанавливается равным 240 символам.

  • -b определяет что regini.exe совместим со старыми версиями regini.exe и более старыми сценариями.

  • textFiles указывает названия текстовых файлов в формате ANSI или Unicode, которые содержат необходимые команды.

Вы можете получить дополнительные сведения относительно Regini на вебсайте Microsoft Docs

Изменение реестра при помощи PowerShell

Как и следовало ожидать, при помощи PowerShell вы можете получать достаточно большой объём контроля и число команд для управления Реестром Windows и для его изменения, причём в локальном или удалённом компьютере доступны буквально десятки команд.

На вебсайте Microsoft Doc вы можете найти полный перечень доступных команд с их синтаксисом и прочими требованиями.

[Совет]Совет

Чторбы убедиться что PowerShell работает ожидаемым для вас образом, вам необходимо проверить установленную политику выполнения команд. Вы можете осуществить это в интерфейсе PowerShell при помощи команды Get-ExecutionPolicy и вы можете установить что для неё установлено ограничение. Тогда вам надлежит воспользоваться командой Set-ExecutionPolicy unrestricted с тем, чтобы ваши команды выполнялись.

Сторонние утилиты реестра

Существует большое число очень полезных утилит сторонних разработчиков, которые могут применяться для управления, редактирования и манипуляций с Реестром Windows. Эти инструменты могут быть чрезвычайно полезными при устранении неисправностей, в особенности когда ваш ПК не запускается. Они работают различными способами, но наиболее лучшими выступают следующие:

Сравнение файлов реестра

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

Устранение неисправностей реестра при помощи Sysinternals

В составе пакета Microsoft Sysinternals имеется несколько очень полезных инструментов, которые можно применять для управления Реестром Windows и устранения в нём неполадок.

RegJump

RegJump это инструмент командной строки, который обладает одним очень простым заданием. RegJump открывает ваш Редактор Реестра Windows по заданному пути улья. Воспользуйтесь им в формате Regjump <<path>> | -c, где <<path>> это название пути в виде t HKLM\Software\Microsoft\Windows, а переключатель -c копирует значение пути из буфера обмена Windows.

AutoRuns

Итак, что случается в случае когда у вас имеется запись старта программы при запуске, а в этой записи отсутствует, неверен или повреждён важный ключ реестра? Ладно, когда это программа, которую вы запускаете из меню Пуск, из панели задач или из ярлыка на Рабочем столе, вы можете узнать какая ошибка происходит при помощи средства просмотра событий (vent Viewer), которое сообщит вам какой именно ключ не может быть найден или загружен.

В случае Автоматического запуска программ, служб, драйверов и прочих важных частей самой операционной системы всё может оказаться намного сложнее. Вот тут-то и пригодится программа AutoRuns Microsoft Sysinternals.

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

 

Рисунок 19.12


Элементы запуска, которые не могут быть найдены, выделяются в AutoRun жёлтым

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

Когда не найденный элемент является программой или прочим не входящим в Реестр элементом, скажем, библиотекой DLL, вы можете щёлкнуть по нему правой кнопкой мыши и в появившемся контекстном меню выбрать Jump to entry. Это откроет Редактор Реестра и выделит соответствующую запись Реестра для вносящего разброд элемента (см. Рисунок 19.13). Затем можно просто исправить соответствующую запись Реестра или удалить её, если она более не требуется.

 

Рисунок 19.13


Редактор Реестра может непосредственно вызываться из AutoRuns

Выводы

Исправный Реестр означает дееспособную установку Windows, поскольку Реестр на самом деле является теми мозгом и нервной системой, благодаря которым всё работает правильно и надёжно. На самом деле нет ничего хуже всплывающих сообщений об ошибках, говорящих нам что X или Y не запускается по той причине, что не может быть найден ключ реестра Z, а следовательно необходимо устранить эту проблему.

Говоря о запуске, нет ничего хуже чем ПК, не запускающийся до появления Рабочего стола. Однако не всё потеряно и вам не придётся и вам не придётся автоматически повторно устанавливать образ компьютера или переустанавливать свежую копию Windows 11. В своей следующей главе мы подробно рассмотрим устранение неполадок при запуске и способы устранения возникающих проблем.