Открыть реестр напрямую по заданному ключу?


57

Мне нужно открыть ключ реестра, например, следующий в regedit.

HKLM\Software\Microsoft\Foo\Bar

Есть ли инструмент, который будет переходить к клавише для меня, без необходимости самостоятельно перемещаться по папкам?


1
Чтобы добавить свои 2 ¢, некоторое время назад я написал программу для имитации нажатий клавиш, когда обычного вставки было недостаточно. Я добавил специальный режим для разделов реестра, чтобы позволить вам скопировать путь к реестру и нажать горячую клавишу в Regedit, чтобы он автоматически переходил по этому пути. Позже я написал программу, которая выполняла бы некоторые операции с реестром и должна была обеспечивать функцию перехода по пути. Я обнаружил, что Regedit открыт; если это так, он посылает правильные нажатия клавиш (я скопировал функцию из старой программы), а если нет, он пишет …Regedit\LastKeyи открывает Regedit; Regedit прыгает сам.
Synetech

Вы можете проголосовать в приложении Windows Feedback (на Win10) «Regedit должен иметь функциональность адресной строки». Следующая ссылка будет работать только в Win10 окнах обратной связи: ContextID = 79 & feedbackid = b11f8bdf-eaf4-4799-8e65-5161924ad22c и форма = 1 & = 1 ЦСИ
Майкл Freidgeim

2
Windows 10 теперь включает функциональность адресной строки в редакторе реестра. Смотри мой ответ.
Miscreant

Ответы:


64

Это не может быть сделано с использованием regedit.exeсамого себя или любого из его параметров командной строки.

Тем не менее, Microsoft предлагает regjump.exeнебольшую утилиту (ранее от SysInternals), которую можно использовать для открытия редактора реестра для указанного ключа.

После установки вы можете открыть указанный ключ, например, так:

regjump HKEY_LOCAL_MACHINE\Software\Microsoft\Windows

или даже используя сокращения:

regjump HKCU\Software\Microsoft\Windows

Доступные сокращения:

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

Прекрасно работает с Launchy . :)
Mateen Ulhaq

9
Отлично. Теперь, если MS может предоставить инструмент, почему они не могут просто изменить regedit для разрешения параметров командной строки? По крайней мере, у win7 этого еще нет ...
BmyGuest

2
Обратите внимание, что для правильной работы Windows 10 требуется регулярный запуск с правами администратора.
Владимир Решетников

1
Используйте, regjump -cчтобы открыть ключ из буфера обмена.
xmedeko

Windows 10 теперь включает функциональность адресной строки в редакторе реестра. Смотри мой ответ.
Miscreant

13

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

Сценарий просто устанавливает ключ «последний использованный» в реестре, а затем открывает его.

Откройте Блокнот, вставьте это в него и сохраните как, FooBar.vbsнапример:

Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey","HKLM\Software\Microsoft\Foo\Bar","REG_SZ"
WshShell.Run "regedit", 1,True
Set WshShell = Nothing

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

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

РЕДАКТИРОВАТЬ - Если вы хотите спросить, какой ключ вы хотите открывать каждый раз, вот что вы использовали бы вместо этого:

Set WshShell = CreateObject("WScript.Shell")
Dim JumpToKey
JumpToKey=Inputbox("Which registry key would you like to open?")
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey",JumpToKey,"REG_SZ"
WshShell.Run "regedit", 1,True
Set WshShell = Nothing

Изменение ключа, на который нужно открыть, потребовало бы каждый раз редактировать сценарий, если только он не был указан в качестве аргумента командной строки. Хорошее решение, хотя и очень полезное.
mindless.panda

Ну, мне нравится это решение, потому что оно расширяемое и учит базовым сценариям. Я предполагаю, что вы используете поле ввода, потому что запуск сценария через командную строку требует его вызова через хост сценария? И поэтому простое выполнение чего-то вроде «script / key / foo / bar» не является прямым для сценария в командной строке?
mindless.panda

Я удалил свои комментарии. Попробуйте оба варианта и посмотрите, что проще :-)
Kez

12

Windows 10 теперь включает функцию адресной строки в редакторе реестра:

Функциональность адресной строки редактора реестра

Просто введите или вставьте путь в адресную строку и нажмите Enter.


Следующие сокращения работают с адресной строкой:

HKCR - HKEY_CLASSES_ROOT
HKCU - HKEY_CURRENT_USER
HKLM - HKEY_LOCAL_MACHINE
HKU - HKEY_USERS

Таким образом, HKCC - HKEY_CURRENT_CONFIGсокращение не работает (по крайней мере, на эту дату).


Вы можете активировать адресную строку, нажав Ctrl+Lили Alt+D, как в Windows Explorer.


У меня есть windows 10, и у меня нет этой адресной строки. И два коротких пути не работают.
WORMSS

@ WORMSS Это странно. Посмотрите, есть ли у вас Address Barзапись в Viewменю редактора реестра.
17

Я проверил, Нет, я должен либо (1) иметь старую версию RegEdit, либо (2) где-то на компьютере есть вторая его версия, но не на% PATH%, я проверил свой домашний компьютер под управлением Win10 Дом уже имеет адресную строку. Рабочий ПК под управлением Win10Pro имеет классический RegEdit. Ну хорошо, по крайней мере, теперь я знаю.
WORMSS

@WORMSS Возможно, Microsoft добавила адресную строку в Обновление Создателя.
Miscreant

может быть, CU ломает какое-то программное обеспечение на работе, поэтому у нас его там нет ... Не знаю, есть ли оно на моем домашнем ПК .. Никогда не удосужился посмотреть .. Спасибо за помощь.
WORMSS

6

Скопируйте приведенный ниже текст и сохраните его как командный файл и запустите

@ECHO OFF & setlocal
SET /P "showkey=Please enter the path of the registry key: "
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey" /d "%showkey%" /f 
start "" regedit

Введите путь к ключу реестра, который вы хотите открыть, когда пакетный файл запросит его, и нажмите, Enterи вы сможете открыть regedit с требуемым путем к ключу реестра.


Я должен был удалить, @ECHO OFF<br>чтобы это работало на Windows 8
steampowered

4

В RegEdit у вас есть возможность отмечать пути.

В верхнем меню выберите

Favorites Add to Favorites


После того, как вы добавили закладки в избранное, сделайте резервную копию раздела реестра, HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favoritesчтобы вы могли легко восстановить на новом компьютере, чтобы все ваши избранные снова.
Джеймс Л.

3

Я все время использую мощную макропрограмму ( QWin ), прежде всего, для ввода часто используемых вещей. QMenu также имеет возможность запускать приложения.

Когда я рассказал автору, Гэри Шансону, о regjump и спросил, возможно ли передать содержимое буфера обмена в качестве аргумента команды, он обновил его, чтобы разрешить передачу содержимого буфера обмена в виде переменной, что означает;

Теперь, когда я копирую любую клавишу в буфер обмена, все, что мне нужно сделать, - это нажать клавишу kot для QMenu и набрать «J», чтобы перейти непосредственно к этой клавише в Regedit.

Однако, хотя вышеперечисленное работает в XP, в Win7 / 8 QMenu завершается ошибкой из-за ограничений os на запуск исполняемых файлов. Хотя это будет работать, если установить qMenu как «RUN as admin», что потребует утверждения каждого макроса клавиатуры, который я вызывал. Решение? Установите для QMenu значение RUN для ярлыка RegJump и установите для него значение «RUN от имени администратора» (вы можете передать аргумент ярлыку, который передаст его программе, которую он запускает)

Если QMenu звучит интересно, у меня есть страница об использовании этого на bevhoward.com/WinTools.htm

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

Надеюсь, что эта информация имеет ценность. Беверли Ховард


Добро пожаловать в Супер пользователя! Это отличный ответ, но не могли бы вы добавить некоторую информацию, которую вы имеете на странице, на которую вы ссылаетесь? Это все хорошо и все, но лучше, если он здесь - таким образом, если сайт отключится или изменится, ответ на вопрос все еще доступен. :)
Thor

2

Nircmd тоже может это сделать.

http://www.nirsoft.net/utils/nircmd.html

 Open the desired Registry key/value in RegEdit
 nircmd.exe regedit "HKLM\Software\Microsoft\Windows\CurrentVersion" "CommonFilesDir"

 Open the Registry key that you copied to the clipboard in RegEdit
 nircmd regedit "~$clipboard$"

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

http://www.nirsoft.net/utils/regscanner.html


2

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

ProgramName_Detail1A_Detail1B
ProgramName_Detail2A_Detail2B

Описания часто обновляются, поскольку предполагаемое использование каждого экземпляра со временем меняется, но описание можно изменить только в реестре. Имея это в виду, следующий код .BAT находит первую службу «ProgramName *» и открывает regedit с этой первой выбранной службой. (Мои сервисные имена не содержат пробелов; если у вас есть, потребуется некоторая адаптация.)

@echo off
setlocal

set __first=
for /f "tokens=5 delims=\" %%i in ('reg query HKLM\system\currentcontrolset\services /f ProgramName*') do call :findfirst %%i

if "%__first%" == "" (
  echo No ProgramName entries found in registry. Aborting...
  pause
  goto :EOF
)

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /d Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\%__first% /f

start regedit

goto :EOF

:findfirst
if "%__first%" == "" set __first=%1

goto :EOF

1

Это невозможно сделать с помощью стандартного редактора реестра.

Тем не менее, Microsoft / Sysinternals имеет инструмент под названием Regjump, который делает именно то, что вам нужно - запуск в нужном месте в редакторе реестра.


1

Если вы используете Regjump , вы можете подумать о том, чтобы установить переменную среды, например, REGJUMP = C: \ path \ to \ regjump.exe. Затем вы можете использовать Regjump из поля «Начать поиск», скажем, в меню «Пуск» Windows Vista:

введите% REGJUMP% в поле Начать поиск

[Вам может понадобиться перейти к местоположению regjump.exe и настроить для regjump.exe уровень привилегий «Запускать эту программу от имени администратора» на вкладке «Свойства» -> «Совместимость». Это обеспечит правильную работу Regjump на компьютерах с управлением учетными записями пользователей].


Или добавьте весь Sysinternals Suite к пути. По моему опыту отличная идея.
USR

1

С помощью Autohotkey plus regjump вы можете определить сочетание клавиш для перехода к ключевому пути в буфере обмена. Пример:

^!+k::
  Run path\regjump.exe %clipboard%
  return

Обратите внимание, что для Win7 вам нужно установить «Запускать от имени администратора» в свойствах Compatibilty regjump.exe


1

Самый простой способ - использовать стороннее программное обеспечение. Наиболее эффективным является перемычка ключа реестра , и это портативное бесплатное программное обеспечение.

Самое интересное, что вам не нужно копировать раздел реестра: просто выберите его и используйте CtrlAltX, тогда iи расположение раздела реестра будет открыто автоматически. Если вы выберете eи введете какой-то текст, если в нем есть ключ реестра, перемычка ключа реестра может автоматически удалить текст и откроет расположение ключа.


1

Этот пакетный файл работает для меня в Windows 8, если regedit закрывается при запуске пакетного файла.

showkey=Please enter the path of the registry key:
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey" /d "%showkey%" /f 
start regedit

1

Если вам приходится часто его использовать, имеет смысл облегчить его - вы можете комбинировать RegJump и Notepad ++, чтобы перейти в папку реестра после выбора пути reg в тексте.

Загрузите regjump , разархивируйте в безопасное место, создайте командный файл:

C: \ [... путь к вашему regjump.exe ...] \ regjump.exe% 1

Вот как это сделать:

  1. Установите NppExec через плагины, менеджер плагинов.
  2. Затем в NPP - нажмите F6 (меню NPP: Plugins / NPP Exec / Execute) добавьте / сохраните следующее: (если вы вызываете regjump.exe напрямую, он будет мигать, но не откроет реестр ..., вы можете попытаться вызвать его используя cmd с переключателями)
C: \ [... путь к вашему пакетному файлу ...] \ regjump.bat "$ (CURRENT_WORD)"
  1. Сохраните скрипт, поставьте имя "RegJump to"
  2. открыть плагины / NPP Exec / дополнительные параметры ...
  3. в левом нижнем углу в раскрывающемся списке «Связанный скрипт» выберите «RegJump to»
  4. нажмите кнопку «Добавить / Изменить»
  5. проверьте в верхнем меню пункты «Поместить в подменю макросов»
  6. нажмите «ОК», чтобы закрыть окно «Дополнительные параметры NPPExec»

Использование : если у вас есть текст, открытый в Notepad ++, который содержит путь к реестру, выберите этот путь к реестру и нажмите в меню: «Macro / RegJump to» - он должен открыть реестр в нужном месте, если путь указан правильно. если путь неверен, он откроет реестр в ближайшем родительском пути.

regjump также поддерживает сокращенные ключи: HKLM \ Software \ Microsoft

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.