Информация к новости
  • Автор: remo
  • Дата: 9 сентябрь 2011 11:09
9 сентябрь 2011 11:09
Быстрый способ навигации в системном реестре. Переход в нужный раздел реестра из командной строки или одним щелчком мыши

Категория: Windows 7 Seven / Обзоры и советы / Просмотров: 4663 / Комментариев: 0

Я часто пишу «перейдите в раздел реестра HKEY_что-то_там», и подчас это - утомительное путешествие, особенно когда требуется попасть в раздел идентификатора класса какого-нибудь ActiveX. Сегодня мы рассмотрим способ быстро и беззатратно перейти в нужный раздел реестра, не прибегая к лазанию по разделам.

Приложение Regedit.exe, известное также как «Редактор реестра», начиная с Windows 2000, обладает одной полезной особенностью: он «запоминает» последний раздел, в котором вы пребывали перед тем, как закрыли редактор реестра. Этот ключ пишется в раздел реестра 
HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit, в параметрLastkey строкового типа.

Быстрый способ навигации в системном реестре. Переход в нужный раздел реестра из командной строки или одним щелчком мыши



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

@echo off 
if -%1==- goto end
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /d %1 /f
start regedit
:end
[/code]


Я сохраню это в файл regnavigate.cmd
Тогда, запустив файл regnavigate.cmd таким вот образом:

D:\>regnavigate.cmd HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion[/code]


Я получу то, что мне надо:

Быстрый способ навигации в системном реестре. Переход в нужный раздел реестра из командной строки или одним щелчком мыши



Способ полон недостатков. Во-первых, для корректной работы этого командного файла нужно запускать его от имени администратора. Во-вторых, если в пути раздела реестра содержится пробел, раздел надо заключать в кавычки, а это - дополнительная возня. И в-третьих, давно есть regjump от Марка Руссиновича , и ещё неизвестно, кому что проще – написать командный файл или скачать эту утилиту. Словом, командный файл был приведен исключительно в целях общего развития, дабы вы представляли себе описываемый мной подход.

Куда удобней не совершать лишних телодвижений вообще, а раздел реестра открывать, взяв путь в реестре из буфера обмена Windows. Для этого целесообразно воспользоваться возможностямиWindows Scripting Host (WHS) и набросать простенький скрипт, который будет получать содержимое буфера обмена, и работать по следующему сценарию:

Вы читаете статью, в ней написано – «перейдите в раздел реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion». Вы выделяете путь к разделу, нажимаете CTRL+С и запускаете скрипт. Редактор реестра открывается в нужном месте.


В качестве скриптового языка WHS я буду использовать VBScript

Получение содержимого буфера обмена испокон веков делается через Internet Explorer. Вот так, например, делают авторы блогов Microsoft TechNet:

Dim objIE 
Dim сClipBoard
Set objIE = CreateObject("InternetExplorer.Application")
сClipBoard = objIE.document.parentwindow.clipboardData.GetData("text")
objIE.Quit
[/code]


Код создает экземпляр объекта IE и через его методы выдёргивает содержимое буфера обмена в переменную сClipBoard. Код не лишен недостатков. Во-первых, он требует наличие IE, во-вторых – появляется дурацкое подтверждение прав доступа страницы к буферу обмена (в IE9+Windows 7, во всяком случае). Да и на создание экземпляра IE уходит приличное время.

Мы пойдем другим путем. Мы создадим экземпляр не IE, а HTA-файла. Он не задает вопросов и работает на порядок быстрее. А код будет почти такм же:

set objHTA=createobject("htmlfile")   
cClipBoard=objHTA.parentwindow.clipboarddata.getdata("text")  
[/code]



Теперь пишем непосредственно работу с реестром. Необходимыми методами снабжен объект WScript.Shell. В частности, нас интересует метод RegWrite. Синтаксис смотрим, опять-таки, на MSDN.

В нашем случае мы должны перезаписать значение параметра LastKey в разделеHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit

Для этого допишем в скрипт следующее:

Dim WshShell 
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\ Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey", сClipBoard, "REG_SZ"
[/code]


Думаю, и здесь ничего сложного нет. В итоге скрипт получится таким:

Dim objHTA 
Dim cClipBoard
Dim WshShell

set objHTA=createobject("htmlfile")  
cClipBoard=objHTA.parentwindow.clipboarddata.getdata("text")  

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey", cClipBoard, "REG_SZ"
WshShell.Run "regedit.exe"

Set objHTA = nothing
Set WshShell = nothing
[/code]


В общем-то, и всё. Сохраняем это, предположим, в файл d:\regnav.vbs. Осталось создать ярлык на запуск скрипта с командой вида wscript d:\regnav.vbs 

Быстрый способ навигации в системном реестре. Переход в нужный раздел реестра из командной строки или одним щелчком мыши

 

Быстрый способ навигации в системном реестре. Переход в нужный раздел реестра из командной строки или одним щелчком мыши


Выделяем вот эту строку:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon[/code]


Нажимаем CTRL+C и щелкаем по ярлыку. Не правда ли, чертовски удобно?

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

Запостил: Happy Bulldozer
Материал: http://winreview.ru/

Нашли ошибку в тексте? Выделите фрагмент текста и отправьте нажатием Ctrl + Enter
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:*
Комментарий:
b
i
u
s
|
left
center
right
|
emo
url
leech
color
|
hide
quote
translit
Вопрос:
Допишите недостающие буквы в слове: Росc_я (слово в ответе писать целиком)
Ответ:*
Введите код: *
2011-2014 WikiWin.info
Microsoft Windows © и логотип Windows © являются зарегистрированными товарными знаками компании Microsoft Corporation © в США а так же в других странах.
Администрация сайта не несет ответственность за содержание и достоверность информации.
В случае, если Вы обнаружили свою статью, и считаете что Ваши авторские права нарушены ее размещением - немедленно свяжитесь с нами,
администрация сайта обязуется удалить материалы при первом требовании!
Для связи з администрацией (melkor@ukrpost.net)