Как поменять владельца ключа или ветки реестра из командной строки. Утилита reg - запуск и правка реестра из командной строки

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

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

Ниже приведен список пяти корневых разделов и их коротких обозначений:

  • HKEY_CLASSES_ROOT (HKCR),
  • HKEY_CURRENT_USER (HKCU),
  • HKEY_LOCAL_MACHINE (HKLM),
  • HKEY_USERS (HKU),
  • HKEY_CURRENT_CONFIG (HKCC).

Что бы просмотреть разделы реестра командной строкой, надо прописать

reg query «ИмяРоздела»

В папке %SystemRoot%\system32\config хранятся пять системных файлов:

  • SYSTEM
  • SECURITY
  • SAM
  • SOFTWARE
  • DEFAULT

плюс, в каталоге Documents and Settings хранится еще один «особенный» документ NTUSER.DAT . Редактировать или копировать эти ресурсы штатным методом не выйдет – нужны специальные утилиты. Однако, сделать резервную копию реестра можно через командную строку. Для этого можно использовать две функции – save и export. Начнем с первой.

Утилита reg командная строка, команда save

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

rеg save "ИмяРаздела" "ИмяФайла"

ИмяРазделя – указываем путь к сохраняемому разделу, например

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Sеrvicеs

ИмяФайла – здесь указывается путь к файлу куста (registry hive), который нужно создать, он должен иметь расширение.hiv, например: “C:\regsave\sеrvicеs.hiv”. Если надо работать с удаленной системой, то стоит помнить, что удаленно доступны только ветки HKLM и HKU. Если при попытке просмотреть разделы реестра командной строкой на удаленной машине возникают трудности, например, после ввода команды:

rеg query \\192.168.1.6\HKLM

просмотреть содержимое HKLM на компьютере с IP адресом 192.168.1.6, возникнет ошибка типа «Отказано в доступе» или «путь не найден», то, стоит проверить:

  • Запущена ли на удаленной машине служба «Удаленный реестр» (командная строка для предлагает утилиты net start «ИмяСлужбы» и net stop «ИмяСлужбы»)
  • Открыт ли простой общий доступ: Свойства папки, снять галочку с «Использовать простой общий доступ к файлам и папкам »
  • Проверить, разрешен ли вообще доступ к компьютеру.
  • Используется ли пароль в учетной записи администратора, если нет, то стоит его присвоить (Защита от пустых паролей )

И, даже проделав все это, вполне возможно, что запуск команды не даст результата и в доступе будет отказан, мне помогло выполнение предварительной команды

tasklist /s 192.168.1.6 /u ИмяПользователя /p Пароль

тут я запустил t для просмотра запущенных процессов на удаленной машине, используя пароль администратора, фактически авторизировался, после, манипуляции прошли на ура (с Семерки подключал удаленный реестр машины Windows XP Sp3).

rеg save HKLM\SYSTEM\CurrentControlSet\Servicеs "C:\regsave\servicеs.hiv"

если все пройдет хорошо, то после запуска команды появится сообщение «Операция успешно завершена», а в каталоге regsave появится гордый файл куста servicеs.hiv. Для того, что бы вернуть прежний вид измененному разделу, используя ранее сохраненный слепок, стоит выполнить команду:

rеg restore HKLM\SYSTЕM\CurrentControlSet\Sеrviсеs "C:\regsave\services.hiv"

с большой вероятностью, что выбьет ошибка «отказано в доступе», скорее всего, система использует эту ветку, и поэтому она занята. Но, что бы удовлетворить желание действий, создадим временный раздел:

rеg add HKLM\SYSTEM\CurrentContrоlSet\Services\TEMP

тут в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services мы добавили временный раздел TEMP. Если ввести команду

rеg query HKLM\SYSTEM\CurrentCоntrolSet\Serviсеs\TEMP

то видно, что тут пока пусто. А теперь снова произведем запуск команды restore, но сделаем правку пути, куда будем перезаписывать данные:

rеg restore HKLM\SYSTЕM\CurrentContrоlSet\Services\TEMP "C:\regsave\services.hiv"

поскольку подраздел реестра TEMP, созданный командной строкой, не используется системой (мы его только что создали),то и данные туда успешно записались. Теперь, введя команду

rеg query HKLM\SYSTEM\CurrentControlSet\Serviсеs\TEMP

видно, что сюда импортировалось содержимое всего подраздела service. В результате этих действии видно, что неправильное использование команды restore может привести к простому замусориванию вашего реестра. Теоретически, что бы удалить подраздел TEMP надо ввести команду:

rеg delete HKLM\SYSTЕM\CurrentControlSet\Serviсеs\TEMP

но в моем случае выбило «отказано в доступе», видимо некоторые из импортированных подразделов система уже успела взять в разработку, остальные по отдельности удаляются легко.

Утилита reg командная строка, команда export

Есть и второй способ сделать слепок определенного реестра через командную строку. Для этого используется утилита reg export, ее запуск позволяет создать «заплатки» – файла с расширением.reg, довольно часто с ними приходилось сталкиваться в компьютерных играх, вот пока «заплатку» не запустишь, что бы добавилась информация об игре в систему, игрушка не будет работать. Положительная сторона таких файлов в том, что их достаточно запустить, что бы информация сама записалась куда надо. Запуск реестра из командной строки. Ну что же, попробуем все тот же подраздел Services экспортировать:

reg export HKLM\SYSTЕM\CurrentControlSet\Services "C:\regsave\sеrviсеs.reg"

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

Терминология

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

Рисунок 1 - Редактор реестра

Как видите, здесь нет никаких "веток" и "ключей". Теперь к делу.

REG-файл

REG-файл - это текстовый файл с расширением REG, составленный в определенном формате.

Формат REG-файла

Ниже приводится пример REG-файла, отключающего меню недавних документов.

;Отключить меню недавних документов

"NoRecentDocsMenu"=hex:01,00,00,00

Создание REG-файла

Создать REG-файл очень просто. Скопируйте код в любой текстовый редактор (например, Блокнот). Нажмите CTRL+S и сохраните файл с любым именем и расширением.reg, заключая оба в кавычки.


Рисунок 2 - Создание REG-файла

Синтаксис REG-файла

  • Windows Registry Editor Version 5.00 - заголовок файла, являющийся его неотъемлемой частью. Также в качестве заголовка вы можете встретить REGEDIT4 - это формат Windows 98 / NT 4.0, который впрочем поймут и более новые операционные системы Windows. Подробнее о различиях в форматах можно прочитать на сайте JSO FAQ (на английском языке).
  • ;Отключить меню недавних документов - комментарий. Все строки, начинающиеся с ; (точка с запятой) представляют собой комментарии.
  • - это раздел реестра. Графически (в редакторе реестра) он представляет собой путь к параметру. В формате REG-файлов разделы всегда заключаются в квадратные скобки. В этом примере (под)раздел Explorer принадлежит разделу HKEY_CURRENT_USER.
  • "NoRecentDocsMenu"=hex:01,00,00,00 - параметр реестра и его значение. В зависимости от значения параметра, меняется поведение операционной системы или объекта. Многие параметры можно настроить в графическом интерфейсе операционной системы, но далеко не все. В таких случаях для изменения параметра используют редакторы реестра, твикеры или REG-файлы.

В REG-файле может содержаться несколько разделов и параметров реестра, но заголовок используется только в самом начале.

Windows Registry Editor Version 5.00

;Отключить перезагрузку в случае BSOD

"AutoReboot"=dword:00000000

;Отключить уведомление на экране приветствия о непрочитанных сообщениях

"MessageExpiryDays"=dword:00000000

Данный REG-файлом был получен путем экспорта из редактора реестра regedit.exe. При помощи REG-файлов можно вносить изменения в системный реестр - эта операция называется импортом параметров реестра.

Экспорт параметров реестра

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

Редактор реестра Windows (regedit.exe)

В состав ОС Windows входит программа для редактирования реестра - regedit.exe . Поскольку она располагается в системном каталоге, для ее запуска в командной строке не нужно указывать полный путь (например, достаточно будет такой последовательности: Пуск - Выполнить - regedit - OK ).

Для того чтобы экспортировать раздел реестра, достаточно щелкнуть по нему правой кнопкой мыши и выбрать из контекстного меню команду Экспортировать (в Windows 2000 эта команда расположена в меню Файл ).

Другие редакторы реестра

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

Командная строка

Из командной строки экспорт параметров реестра можно выполнить при помощи команды REG EXPORT , обладающей следующим синтаксисом.

REG EXPORT Полный путь к разделу реестра в виде: КОРЕНЬ\Подраздел (только для локального компьютера). Корневой раздел. Значения: [ HKLM | HKCU | HKCR | HKU | HKCC ]. Полный путь к разделу реестра в выбранном корневом разделе. Имя файла на диске для экспорта. Примеры: REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg Экспортирует все подразделы и значения параметров раздела MyApp в файл AppBkUp.reg

Импорт параметров реестра

Импорт параметров реестра можно осуществить несколькими способами.

Запуск REG-файла при помощи графического интерфейса

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

Двойной щелчок мыши

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


Рисунок 3 - Система запрашивает подтверждение на внесение изменений.

Из-за этого запроса такой способ не подходит для импорта параметров в реестр во время автоматической установки системы. Но есть и другие способы.

Командная строка

Для импорта REG-файлов из командной строки существует команда REGEDIT . Набрав в командной строке

Вы получите точно такое же диалоговое окно, как при двойном щелчке мыши. Подавить появление диалогового окна можно запустив команду с параметром /S . Именно этот способ чаще всего применяется во время автоматической установки Windows .

Команда REG ADD

При помощи команды REG ADD также можно импортировать параметры реестра. Она удобна тем, что команды для импорта параметров можно включить в состав пакетного файла, выполняющего также и другие задачи (т. е. нет необходимости в дополнительном REG-файле). Например, эта команда нередко применяется для импорта значений реестра в раздел RunOnceEx и последующей установки программ при первом входе в систему. Синтаксис команды достаточно прост.

REG ADD [\\\] Имя удаленного компьютера, если оно опущено, то по умолчанию считается равным имени локального компьютера. На удаленных компьютерах доступны только разделы HKLM и HKU. Полный путь к разделу реестра в виде КОРЕНЬ\Подраздел. Корневой радел. Значения [ HKLM | HKCU | HKCR | HKU | HKCC ]. Полный путь к разделу реестра в выбранном корневом разделе. /v Имя добавляемого параметра в указанном разделе. /ve Добавить пустой параметр (По умолчанию) в указанный раздел. /t Типы данных. По умолчанию, считается равным REG_SZ. /s Определяет разделитель, который используется для разделения данных в многострочных параметрах типа REG_MULTI_SZ. По умолчанию, считается равным "\0". /d Значение, присеваемое добавляемому параметру реестра. /f Принудительно перезаписывать существующие записи реестра без предупреждения. Примеры: REG ADD \\ABC\HKLM\Software\MyCo Добавляет раздел HKLM\Software\MyCo на удаленный компьютер ABC REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead Добавляет параметр с именем: Data, типом: REG_BINARY, и значением: fe340ead REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail Добавляет параметр с именем: MRU, типом: REG_MUTLI_SZ, и значением: fax\0mail\0\0 REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%% Добавляет параметр с именем: Path, типом: REG_EXPAND_SZ, и значением: %systemroot% Примечание: Используйте в строке двойные символы процента (%%)

INF-файл

Импортировать параметры в реестр можно и при помощи INF-файлов. Их общий синтаксис несколько сложнее, чем у REG-файлов, но непосредственно запись в реестр осуществляется достаточно просто. Ниже приводится пример из аддона Msgina

Signature="$Windows NT$" Msgina OptionDesc="Msgina" Tip="Библиотека GINA входа в систему" Modes=0,1,2,3 AddReg=Msgina.AddReg HKLM,"Software\Policies\Microsoft\Windows\System\Shutdown","ShowHibernateButton",0x10001,1 HKLM,"Software\Policies\Microsoft\Windows\System\Shutdown","HibernateAsButton",0x10001,1

Примечание . Дополнительную информацию об INF-файлах можно найти в .

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

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

В этой статье я решил привести пример «издевательства » над собственной системой. Вначале, стоит обратить свое внимание на то, пути к каким программам прописаны в автозагрузке. Через меню Пуск доступна папка автозагрузка, но это лишь вершина айсберга, есть более верный способ просмотреть что находится в автозагрузке, например, используя утилиту, входящую в состав Windows - msconfig (Пуск/выполнить/msconfig). Реестр командная строка. Однако, мир не столь уж прост, и порой стоит прибегнуть к более продвинутым средствам, например утилита autoruns.exe . С ее помощью можно увидеть намного больше, на вкладке everything сразу бросаются в глаза различные разделы, в которых и прописано много чего интересного. Если не вникать в подробности, то для простого примера стоит обратить внимание на нижестоящие разделы:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

Плюс, стоит бросить взгляд на раздел:

  • HKEY_CURRENT_USERS\Software\Microsoft\Windows\CurrentVersion\Run

Раздел HKLM охватывает всех пользователей, a HKCU - только текущего. Создадим нового пользователя с правами администратора:

Net user NewUser password /add - создаем пользователя NewUser и присваиваем ему пароль password

Net localgroup Администраторы NewUser /add - добавляем новоиспеченного пользователя в группу Администраторы.

Стоит напомнить, что сервер сценариев для работы с реестром предоставляет объект Wscript.Shell и его методы .

Теперь попробуем, произвести редактирование системного реестра из командной строки, чтобы изменить пароль пользователя NewUser используя ветку HKLM. Для этого стоит зайти в систему через свою учетную запись и создать батник следующего содержимого (текстовый файл с расширением.bat):

net user NewUser newpass

Следующая задача состоит в том, что бы пользователь NewUser его запустил, для этого прописываем в командной строке:

reg add HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v NewPass /t reg_sz /d c:\Master.bat /f

В данном случае мы добавили в подраздел RunOnce новый параметр под названием NewPass со строковым типом reg_sz и прописали путь к нашему батнику. Теперь при входе в систему будет происходит запуск сценариях Master.bat, который в свою очередь изменит данные учетной записи.

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

HKEY_CURRENT_USERS\Software\Microsoft\Windows\CurrentVersion\Policies\System

тут параметр DisableRegistryTools изменить с единицы на ноль, или просто удалить. Но, можно так и не извращаться, достаточно использовать редактор от стороннего разработчика, например reglite , или, произвести редактирование реестра из командной строки:

REG DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableRegistryTools

Однако, подсунуть свинью можно и собственными силами. Есть такая утилита как regini , она позволяет назначать разрешения к тем или иным веткам реестра. Не знаю почему, но на Семерке по команде regini /? выводится полная справка, а вот в Windows XP SP3 - ничего. Так вот, синтаксис утилиты довольно прост:

regini.exe -m "компьютер" "путь к файлу сценария"

если утилита используется локально, то параметр -m «компьютер» не нужен. Всего есть 17 пунктов, и каждый определяет те или иные разрешения.

Прежде всего, надо создать текстовый файл, в котором будет прописана нужная ветка и права для нее. Например, если в файле прописать строчку Registry\Machine\Security , то администраторам и учетной записи локальной системы будут предоставлены права полного доступа к ветви реестра HKLM\SECURITY. Но, эта утилита имеет один изъян - она затирает предыдущие права. Если посмотреть на разрешения для ветки SECURITY, то мы увидим, что полный доступ имеет только локальная система (SYSTEM), именно поэтому, под администратором вы не сможете просмотреть содержимое этого раздела. Редактируя реестр через командную строку, с использованием утилиты regini я решил дать для ветки SECURITY полный доступ для администратора (хотя это можно сделать в самом редакторе реестра), в файле сценария я прописал следующую строчку Registry\Machine\Security . Реестр командная строка.

Утилиту запустил, путь к сценарию прописал. И о чудо, я имею доступ к этой ветке, ни о чем не подозревая, я перезагрузил систему. Увидев надпись при загрузке «отсутствуют права доступа к файлу» или что-то в этом роде, я понял НАДО БЫЛО И ЛОКАЛЬНОЙ СИСТЕМЕ ДАТЬ ДОСТУП! Благо, что на другом винте стояла тоже ХР, правда не SP3 a SP2, я банально заменил весь реестр и о чудо, система заработала!