Навигация > Блог /

| Подписаться на RSS

И снова о реестре

14 октября 2005 | Комментарии [10] | Опубликовано в Система, Софт

Как большинство из нас запускают Блокнот, Калькулятор, System Configuration Utility?
Нет, я не спорю, что есть народ, которому не лень идти в Пуск => Программы => Стандартные и т.д. Но подавляющее большинство просто пишут в командной строке notepad, calc, msconfig и даже не напрягаются с поиском нужных ярлыков :)
Я отношусь к категории тех, кто пользуется командной строкой. И очень часто мне приходилось сетовать на то, что любимые программы не запускаются из командной строки… Но пришло время, когда терпение лопнуло и начался поиск нужной информации. Информация была найдена и я удивился тому, как же все на самом деле просто.
Отныне и навсегда, все любимые программы могут запускаться из командной строки. Итак, что же для этого нужно:
1. В командной строке (и снова это магическое действие) пишем волшебное слово «regedit» или «regedt32» — это уж, кому как нравится.
2. Заходим в «HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\ CurrentVersion\\App Paths» и видим нем кучу ключей с названием типа «имя.exe». Вот они – псевдонимы к программам.
3. Создаем ключ, например, «test.exe»
4. В созданном ключе создаем два строковых параметра:

a) Default – значение – путь к файлу запуска приложения

b) Path – путь к рабочей папке

5. В командной строке пишем “test” — в результате должна запуститься программа, путь к которой был прописан в параметре Default
Вот и все. Если какая-то программа уже занимает выбранный псевдоним – можно просто изменить значения параметров и, например, команда «calc» будет запускать не банальный виндовый калькулятор, а какую-нибудь навороченную умножательно- делительную машину :)

Впервые статья была опубликована в Блоге о тестировании Даниила Мясникова.

Метки: , ,


Укрощение реестра

14 октября 2005 | Комментарии [2] | Опубликовано в Система, Софт

Возникают ситуации, когда необходимо несколько раз переустанавливать тестируемую программу, а она при этом каждый раз при удалении оставляет в реестре набор ключей и значений, и при повторной установке поднимает старые настройки… Приходится каждый раз после удаления запускать редактор реестра и удалять эти ключи. Знакомая ситуация? Когда подобное случилось со мной, то моего терпения хватило совсем не на долго. И в результате изучения доступных материалов и нескольких экспериментов на свет появился файл «remove-keys.bat» который удалял ключи оставленные программой.

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

1. Добавление ключей и параметров:
Для добавления ключа используется команда "REG add".
Записывается: reg add ИмяКлюча
Если в имени ключа содержатся пробелы — путь нужно взять в кавычки.
Пример:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Apple Computer, Inc.\QuickTime\Installed Files"

При добавлении параметров команда записывается следующим образом:

reg add ИмяКлюча /v ИмяПараметра /t ТипПараметра /d ЗначениеПараметра
Тип параметра может быть: REG_BINARY, REG_SZ, REG_DWORD, REG_MULTI_SZ, REG_EXPAND_SZ
Как и в случае с ключом, если значение или имя параметра содержат пробелы — необходимы кавычки.
Пример:
reg add "HKEY_CURRENT_USER\Control Panel\Current" /v "Color Schemes" /t "REG_SZ" /d "Windows Standard"

2. Удаление ключей и параметров:

Теперь попробуем удалить все что мы создали (и не только):
Для удаления используется кооманда «REG delete»
Записывается: reg delete ИмяКлюча
Ситуация с пробелами аналогична прдедыдущей, если есть пробелы — ставим кавычки.
Пример:
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Apple Computer, Inc.\QuickTime\Installed Files"

Если же удалять весь ключ нет необходимости, а нужно удалить только один или несколько параметров — используем уже знакомую опцию «/v»
Пример:
reg add "HKEY_CURRENT_USER\Control Panel\Current" /v "Color Schemes"
Указывать тип и значение параметра не нужно.

При выполнении команды, появится запрос на подтверждение действия, для того, чтобы выполнить действие без запроса нужно добавить опцию /f

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

HKEY_CURRENT_USER = HKCU
HKEY_LOCAL_MACHINE = HKLM
HKEY_CLASSES_ROOT = HKCR
HKEY_USERS = HKU
HKEY_CURRENT_CONFIG = HKCC

Несколько не столь часто используемых команд:

REG query — проверка наличия ключа в реестре
REG compare — сравнение ключей
REG copy — копирование ключа по указанному пути на локальной или удаленнной сисиеме
REG restore — восстановление ключа из файла
REG save — сохранение ключа в файл

3. Запрос наличия ключа:
Запись команды: REG query ИмяКлюча
Пример:
reg query "HKEY_CURRENT_USER\Control Panel\Current"
Если ключ существует — ответом будет строка типа:
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Control Panel\Current
Color Schemes REG_SZ Windows Standard

Если ключа не существует — ответ:
Error: The system was unable to find the specified registry key or value

Дла запроса конкретного параметра используем опцию «/v ИмяПараметра».

4. Сравнение ключей:
Может быть полезна при сравнении ключей реестра на двух удаленных машинах.
Запись команды: REG compare ИмяКлюча1 ИмяКлюча2
Пример:
reg compare \\Computer1\HKLM\SYSTEM\CurrentControlSet\Services\DNS
\\Computer2\HKLM\SYSTEM\CurrentControlSet\Services\DNS

При совпадении ключей получаем ответ:
Results Compared: Identical
The operation completed successfully.

При не совпадении:
Results Compared: Different
The operation completed successfully

5. Сохранение ключа в файл:
Сразу оговорюсь, что структура сохраняемого файла отличается от файла создаваемого при экспорте ключа из regedit и просто запустив файл нельзя добавить информацию в реестр. Информация добавляется с помощью команды восстановления из файла, которая описана ниже.
Запись команды сохранения ключа в файл:
reg save ИмяКлюча «ИмяФайла» — по умолчанию файл сохраняется в корневом каталоге, поэтому лучше указывать путь.
Пример:
reg save “HKEY_CURRENT_USER\Control Panel\Current” C:\temp\testsaving.hiv
Если операция выполнена успешно – получаем ответ:
The operation completed successfully
В случае ошибки сообщение зависит от причины возникновения ошибки :)

6. Восстановление ключа из файла:
Запись команды: reg restore ИмяКлюча “ИмяФайла”

Пример:
reg restore “HKEY_CURRENT_USER\Control Panel\Current” C:\temp\testsaving.hiv

7. Копирование ключа:
Может быть использована для копирования ключа на удаленную машину.
Запись команды: reg copy ИмяКлюча1 ИмяКлюча2

Пример:
reg copy HKLM\SYSTEM\CurrentControlSet\Services\DNS
\\Computer\HKLM\SYSTEM\CurrentControlSet\Services\DNS

Ну и в самом конце хочу напомнить, что бекапить файлы реестра бывает очень полезно, особенно при частых экспериментах с оным.

Удачи!

При написании были использованы материалы опубликованные в книге Microsoft Windows Command-Line Administrator’s Pocket Consultant by William R. S

Впервые статья была опубликована в Блоге о тестировании Даниила Мясникова.

Метки: , ,