В своих статьях я довольно часто пишу «перейдите в раздел реестра HKEY_что-то_там», и это подчас утомительное путешествие (особенно когда требуется попасть в раздел идентификатора класса какого-нибудь ActiveX). Поэтому я хочу поделиться с вами решением, максимально упрощающим переход в раздел реестра до двух действий: копируете в буфер обмена путь к реестре - щелчок мыши - и вы на месте.
Немного теории
Редактор реестра (regedit.exe), начиная с Windows 2000, обладает одной полезной особенностью: он «запоминает» последний раздел, который был открыт в нем до того, как пользователь закрыл программу. Полный путь к этому разделу пишется в параметр Lastkey строкового типа в ключе
HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
Для нашей задачи можно (и удобно) воспользоваться этой возможностью. Если заранее записать туда путь, который нам нужен в данный момент, то открыв редактор реестра, никуда переходить не потребуется.
А теперь перейдём к реализации задуманного.
Совет: В Windows 10 можно обойтись без скриптов и программ. Редактор реестра в Windows 10 получил адресную строку, в которую можно вставить скопированный путь к тому или иному разделу реестра, и нажать Enter.
Способ для Windows 10
- Нажмите
Win
+R
и введитеregedit
в поле «Выполнить». - Щелкните в любом месте его адресной строки или нажмите Ctrl + L, чтобы её активировать.
- Напечатайте или вставьте путь к ключу, который нужно открыть.
Для имен корневых разделов HKEY_ * можно использовать сокращенную запись. Сокращения таковы:
HKEY_CURRENT_USER = HKCU
HKEY_CLASSES_ROOT = HKCR
HKEY_LOCAL_MACHINE = HKLM
HKEY_USERS = HKU
Например, когда вам нужно перейти к разделу HKEY_CURRENT_USER\Control Panel\Desktop
, вы можете ввести в адресной строке следующее:
hkcu\control panel\desktop
После того, как вы нажмете клавишу Enter, будет открыт раздел HKEY_CURRENT_USER \ Control Panel \ Desktop.
Как перейти в нужный раздел реестра одним щелчком мыши
Я набросал простенький скрипт, который будет получать содержимое буфера обмена, записывает его в реестр и открывает редактор реестра. Предполагается следующий сценарий:
Вы читаете статью, в ней написано – «перейдите в раздел реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion». Вы выделяете путь к разделу на странице, нажимаете CTRL+С и запускаете скрипт. Редактор реестра открывается в нужном месте.
В качестве средства автоматизации я использую возможности Windows Scripting Host (WHS), а в качестве языка программирования - VBScript.
Буфер обмена
Получение содержимого буфера обмена испокон веков делается через Internet Explorer. Вот так, например, делают авторы блогов Microsoft TechNet:
Dim objIE Dim сClipBoard Set objIE = CreateObject("InternetExplorer.Application") сClipBoard = objIE.document.parentwindow.clipboardData.GetData("text") objIE.Quit
Код создает экземпляр объекта IE и через его методы выдёргивает содержимое буфера обмена в переменную сClipBoard. Код не лишен недостатков. Во-первых, он требует наличие IE, во-вторых – появляется дурацкое подтверждение прав доступа страницы к буферу обмена (в IE9+Windows 7, во всяком случае). Да и на создание экземпляра IE уходит приличное время, и скрипт явно "тормозит" Мы пойдем другим путем. Мы создадим экземпляр не IE, а HTA-файла. Он не задает вопросов и работает на порядок быстрее. А код будет почти таким же:
set objHTA=createobject("htmlfile") cClipBoard=objHTA.parentwindow.clipboarddata.getdata("text")
Отличное решение.
Работа с реестром
Необходимыми методами для работы с реестром снабжен объект WScript.Shell. В частности, нас интересует метод RegWrite. Синтаксис смотрим, опять-таки, на MSDN. В нашем случае мы должны перезаписать значение параметра LastKey в разделе [code]HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit[/code] Для этого допишем в скрипт следующее:
Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey", сClipBoard, "REG_SZ"
Полагаю, здесь ничего сложного нет.
В итоге скрипт получится таким:
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 -m" Set objHTA = nothing Set WshShell = nothing
Сам редактор реестра запускается командой regedit.exe -m, позволяющей открыть редактор реестра в нескольких экземплярах (подробнее о ключах командной строки редактора реестра можно почитать здесь). Сохраняем код скрипта, предположим, в файл d:\regnav.vbs. Осталось создать ярлык на запуск скрипта с командой вида[code]wscript d:\regnav.vbs[/code]
Проверка работоспособности
Выделяем вот эту строку:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Нажимаем CTRL+C и запускаем. Не правда ли, удобно? Примечание. Раздел, к которому вы переходите посредством копирования в буфер обмена пути в реестре, должен существовать, в противном случае редактор реестра откроется в корне.
Кроме того, есть и другие способы быстро перейти в раздел реестра.
Приложение Winaero Tweaker
Если вы являетесь пользователем моей программы Winaero Tweaker, начиная с версии 0.8 позволяет открыть ключ реестра одним кликом.
Как только вы откроете эту страницу в Winaero Tweaker, она попытается извлечь путь к ключу реестра из буфера обмена, чтобы сэкономить ваше время. Кроме того, если путь не существует, утилита откроет ближайший существующий раздел по указанному пути.
Например, вы указали
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer
Ключ Explorer по умолчанию не существует в реестре, поэтому утилита откроет HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows
.
Программа RegistryOwnershipEx
Ещё одно из моих приложений, RegistryOwnershipEx, тоже позволяет быстро перейти в нужный раздел реестра.
Некоторое время назад я создал утилиту RegOwnershipEx, которая позволяет получить полный доступ к разделу реестра одним кликом. Кроме этого, она позволяет перейти в желаемый раздел реестра.
Она также может извлечь любой путь реестра из буфера обмена Windows. Если вы запустите программу с аргументом командной строки /j
, то есть regownershipex.exe /j
, она извлечет путь к ключу реестра из буфера обмена и напрямую откроет редактор реестра в нужном месте.
С помощью RegJump
RegJump - отличный инструмент от Windows Sysinternals, который существует очень давно. Он автоматически запускает редактор реестра и переходит по указанному пути реестра. Путь реестра необходимо указать как параметр командной строки для RegJump.
Чтобы редактор реестра открывал ветку HKEY_LOCAL_MACHINE \ Software \ Microsoft напрямую, вы должны использовать эту команду:
regjump.exe HKLM\Software\Microsoft\Windows
RegJump поддерживает опцию командной строки -c, которая указывает программе извлечь путь реестра, хранящийся в буфере обмена. Это позволяет быстро открыть нужный раздел.
Вы можете создать ярлык для запуска приложения с ключом -c, поэтому после копирования пути к ключу реестра просто щелкните созданный ярлык, и это откроет Regedit.exe по нужному ключу.
Помимо Windows 10, RegJump также работает в Windows 7 и Windows 8.
Была ли эта информация для вас полезной? Возможно, у вас есть более простое и эффективное решение? Расскажите об этом в комментариях!
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.
Сергей, спасибо, удобный скрипт.
Пожалуйста. Мне он приличное количество времени сэкономил
И мне… и мне… и больше 2-х в одни руки не давать! Оч полезная штука, благодарствую!
Вот чем меня бесит «этот вордпресс» писал, старался, комментарий, но забыл заполнить имя и мыло (бывает), отправил — получил ошибку — вернулся… и всё пропало, второй раз писать желание не возникло 🙁
а ведь комментарий был о том, что копирование в буфер выделенного пути к реестру и указанный скрипт можно добавить в контекстное меню, что я у себя и сделал
Уважаемый, а может Вы поборете некую толику природной лени и выложите на суд сообщества свой вариант? Уверен, многим было бы интересно оценить и, возможно, применить именно его.
Способ очень понравился. Спасибо!
Возник вопрос: можно ли в скрипте изменить запуск приложения Regedit на другой редактор реестра, например Registry Workshop или аналогичный? если можно, то растолкуйте, как это сделать.
Я пользуюсь только стандартным редактором реестра. Вряд ли я вам буду полезен, ибо указанных вами приложений я в глаза не видел.
Я снова стащил скрипт, как и год назад. Вопреки ожиданиям скрипт на Windows8 работает. Чтобы посодействовать поглощению пиара, добавлю, что достаточно
лишь сохранить скопированный скрипт, и никаких ярлыков не создавать. Далее, выделив путь, копируем его, но вместо вставки щёлкаем по сохранённому документу на его
запуск. Запускается редактор реестра, открытый с разделом, указанным в скопированном
пути. Этот рекорд по краткости побить не удастся. Всем лентяям привет.
Анатолий, я рад вас снова видеть. Ваши витиеватые комментарии ничто не заменит 🙂
Есть еще regjump из sysinernals utils. Тоже просто:
regjump "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
еще и сам запустит regedit
Т.к. на утилите подпись Microsoft, то обычный антивирус не посчитает этот файл опасным.