Подтвердить что ты не робот

Как запустить Windows RegEdit с определенным путем?

Как запустить Windows 'RegEdit с определенным путем, например "HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0", поэтому мне не нужно делать щелчок?

Что такое аргумент командной строки? Или есть место, где можно найти объяснение переключателей RegEdit?

4b9b3361

Ответ 1

Там программа, называемая RegJump, Марк Руссинович, делает именно то, что вы хотите. Он запустит regedit и переместит его в нужный вам ключ из командной строки.

RegJump использует (или, по крайней мере, используется) использовать одно и то же окно regedit для каждого вызова, поэтому, если вы хотите открыть несколько сессий regedit, вам все равно придется делать вещи старомодным способом для всех, кроме тех, которые были установлены RegJump, Небольшое предостережение, но в любом случае следует помнить.

Ответ 2

Используйте следующий командный файл (добавьте в filename.bat):

REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /t REG_SZ /d Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Veritas\NetBackup\CurrentVersion\Config /f
START regedit

для замены:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Veritas\NetBackup\CurrentVersion\Config

с вашим пути к реестру.

Ответ 3

Из http://windowsxp.mvps.org/jumpreg.htm (я не пробовал ни одного из них):

При запуске Regedit автоматически открывается последний просматриваемый ключ. (Редактор реестра в Windows XP сохраняет последний просмотренный раздел реестра в отдельном месте). Если вы хотите перейти к определенному ключу реестра напрямую, не проводя вручную пути, вы можете использовать любой из этих методов/инструментов.

Вариант 1
Использование VBScript: скопируйте эти строки в документ Блокнота как сохраняемый как registry.vbs

'Launches Registry Editor with the chosen branch open automatically
'Author  : Ramesh Srinivasan
'Website: http://windowsxp.mvps.org

Set WshShell = CreateObject("WScript.Shell")
Dim MyKey
MyKey = Inputbox("Type the Registry path")
MyKey = "My Computer\" & MyKey
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey",MyKey,"REG_SZ"
WshShell.Run "regedit", 1,True
Set WshShell = Nothing

Дважды нажмите кнопку Registry.vbs и введите полный путь к реестру, который вы хотите открыть.

Пример: HKEY_CLASSES_ROOT\.MP3

Ограничение: указанный выше метод не помогает, если Regedit уже открыт.

Примечание. Для Windows 7 вам нужно заменить строку MyKey = "My Computer\" & MyKey на MyKey = "Computer\" & MyKey (удалить строку My). Для немецкой Windows XP строка "My Computer\" должна быть заменена на "Arbeitsplatz\".

Вариант 2
Regjump от Sysinternals.com

Этот маленький апплет командной строки принимает путь к реестру и открывает Regedit для этого пути. Он принимает стандартные ключи (например, HKEY_LOCAL_MACHINE) и сокращенную форму (например, HKLM).

Использование: regjump [путь]

Пример: C:\Regjump HKEY_CLASSES_ROOT\.mp3

Вариант 3
12Ghosts JumpReg от 12ghosts.com

Перейти к разделу реестра из значка в трее! Это удивительно полезный инструмент. Вы можете управлять и напрямую переходить на часто используемые ключи реестра. Неограниченный размер списка, переход к клавишам и значениям, получение текущего ключа одним щелчком мыши, переход к ключу в буфер обмена, переход к такому же ключу в HKCU или HKLM. Управление и сортировка ключей с комментариями в удобном меню значков в трее. Создайте ярлыки для ключей реестра.

Ответ 4

Я также хотел бы отметить, что вы можете просматривать и редактировать реестр из PowerShell. Запустите его и используйте set-location, чтобы открыть местоположение реестра по вашему выбору. Сокращенное имя HKEY используется как буква диска в файловой системе (так что перейдите в HKEY_LOCAL_MACHINE\Software, вы скажете: set-location hklm:\Software).

Подробнее об управлении реестром в PowerShell можно узнать, набрав в командной строке PowerShell реестр get-help.

Ответ 5

Вот еще одно пакетное решение с несколькими улучшениями по сравнению с другими пакетными решениями, размещенными здесь.

Он также устанавливает строковое значение LastKey, обновленное самим Regedit на каждом выходе, чтобы показать после запуска тот же ключ, что и при последнем выходе.

@echo off
setlocal EnableDelayedExpansion
set "RootName=Computer"

if not "%~1"=="" (
    set "RegKey=%~1"
    goto PrepareKey
)

echo/
echo Please enter the path of the registry key to open.
echo/
set "RegKey="
set /P "RegKey=Key path: "

rem Exit batch file without starting Regedit if nothing entered by user.
if "!RegKey!"=="" goto ExitBatch

:PrepareKey
rem Remove square brackets and double quotes from entered key path.
set "RegKey=!RegKey:"=!"
if "!RegKey!"=="" goto ExitBatch
set "RegKey=!RegKey:[=!"
if "!RegKey!"=="" goto ExitBatch
set "RegKey=!RegKey:]=!"
if "!RegKey!"=="" goto ExitBatch

rem Replace hive name abbreviation by appropriate long name.
set "Abbreviation=%RegKey:~0,4%"
if /I "%Abbreviation%"=="HKCC" (
    set "RegKey=HKEY_CURRENT_CONFIG%RegKey:~4%"
    goto GetRootName
)
if /I "%Abbreviation%"=="HKCR" (
    set "RegKey=HKEY_CLASSES_ROOT%RegKey:~4%"
    goto GetRootName
)
if /I "%Abbreviation%"=="HKCU" (
    set "RegKey=HKEY_CURRENT_USER%RegKey:~4%"
    goto GetRootName
)
if /I "%Abbreviation%"=="HKLM" (
    set "RegKey=HKEY_LOCAL_MACHINE%RegKey:~4%"
    goto GetRootName
)
if /I "%RegKey:~0,3%"=="HKU" (
    set "RegKey=HKEY_USERS%RegKey:~3%"
)

:GetRootName
rem Try to determine automatically name of registry root.
for /F "tokens=1,2*" %%K in ('%SystemRoot%\System32\reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey"') do (
    if /I "%%K"=="LastKey" (
        for /F "delims=\" %%N in ("%%M") do set "RootName=%%N"
    )
)

rem Is Regedit already running?
%SystemRoot%\System32\tasklist.exe | %SystemRoot%\System32\findstr.exe /B /I /L regedit.exe >nul
if errorlevel 1 goto SetRegPath

echo/
echo Regedit is already running. Path can be set only when Regedit is not running.
echo/
set "Choice=N"
set /P "Choice=Kill Regedit (y/N): "
if /I "!Choice!"=="y" (
    %SystemRoot%\System32\taskkill.exe /IM regedit.exe >nul 2>nul
    goto SetRegPath
)
echo Switch to running instance of Regedit without setting entered path.
goto StartRegedit

:SetRegPath
rem Add this key as last key to registry for Regedit.
%SystemRoot%\System32\reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" /v "LastKey" /d "%RootName%\%RegKey%" /f >nul 2>nul

:StartRegedit
start /B regedit.exe

:ExitBatch
endlocal

Усовершенствования:

  • Путь реестра можно передать также как параметр командной строки для пакета script.

  • Путь реестра может быть введен или вставлен с двойными кавычками или без них.

  • Путь реестра может быть введен или вставлен или передан как параметр с окружающими квадратными скобками или без них.

  • Путь реестра может быть введен или вставлен или передан как параметр также с сокращенным названием улья (HKCC, HKCU, HKCR, HKLM, HKU).

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

  • Пакетный файл пытается автоматически получить имя корня реестра, которое находится на английском языке Windows XP Мой компьютер, на немецком Windows XP, Arbeitsplatz и в Windows 7 просто Компьютер. Это может завершиться неудачно, если значение LastKey Regedit отсутствует или пусто в реестре. Для этого случая укажите правильное имя корня в третьей строке пакетного кода.

Ответ 6

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

@ECHO OFF
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 открывает ключ, определенный в этом значении.

Ответ 7

Как упоминает Крис, RegJump выполнит трюк.

Кроме того, если вы прыгаете вперед и назад между несколькими разными путями, не забывайте, что вы можете установить "Избранное" в Regedit. Это довольно удобно, и вам не понадобится отдельный значок рабочего стола для каждого из них (как вы могли бы с RegJump).

Ответ 8

Я думал, что это решение С# может помочь:

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

В этом примере опция меню "Настройки реестра" открывает RegEdit для node для вызываемой программы.

Форма программы:

    private void registrySettingsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string path = string.Format(@"Computer\HKEY_CURRENT_USER\Software\{0}\{1}\",
                                    Application.CompanyName, Application.ProductName);

        MyCommonFunctions.Registry.OpenToKey(path);

    }

MyCommonFunctions.Registry

    /// <summary>Opens RegEdit to the provided key
    /// <para><example>@"Computer\HKEY_CURRENT_USER\Software\MyCompanyName\MyProgramName\"</example></para>
    /// </summary>
    /// <param name="FullKeyPath"></param>
    public static void OpenToKey(string FullKeyPath)
    {
        RegistryKey rKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Regedit", true);
        rKey.SetValue("LastKey",FullKeyPath);

        Process.Start("regedit.exe");
    }

Конечно, вы могли бы поместить все это в один метод формы, но мне нравится reusablity.

Ответ 9

Создайте файл BAT с помощью clipboard.exe и regjump.exe для перехода к ключу в буфере обмена:

clipboard.exe > "%~dp0clipdata.txt"
set /p clipdata=input < "%~dp0clipdata.txt"
regjump.exe %clipdata%

(% ~ dp0 означает "путь к файлу BAT" )

Ответ 10

Основываясь на lionkingrafiki answer, здесь более надежное решение, которое будет принимать путь ключа reg в качестве аргумента и автоматически переводит HKLM в HKEY_LOCAL_MACHINE или аналогично по мере необходимости. Если аргумент отсутствует, script проверяет буфер обмена с помощью объекта htmlfile COM, вызванного гибридной химерной JScript. Скопированные данные будут разделены и обозначены, поэтому не имеет значения, не обрезается ли он или даже весь абзац скопированной грязи. И, наконец, ключевое существование проверяется до изменения LastKey. Пути ключей, содержащие пробелы, должны быть в двойных кавычках.

@if (@CodeSection == @Batch) @then
:: regjump.bat
@echo off & setlocal & goto main

:usage
echo Usage:
echo   * %~nx0 regkey
echo   * %~nx0 with no args will search the clipboard for a reg key
goto :EOF

:main
rem // ensure variables are unset
for %%I in (hive query regpath) do set "%%I="

rem // if argument, try navigating to argument.  Else find key in clipboard.
if not "%~1"=="" (set "query=%~1") else (
    for /f "delims=" %%I in ('cscript /nologo /e:JScript "%~f0"') do (
        set "query=%%~I"
    )
)

if not defined query (
    echo No registry key was found in the clipboard.
    goto usage
)

rem // convert HKLM to HKEY_LOCAL_MACHINE, etc. while checking key exists
for /f "delims=\" %%I in ('reg query "%query%" 2^>NUL') do (
    set "hive=%%~I" & goto next
)

:next
if not defined hive (
    echo %query% not found in the registry
    goto usage
)

rem // normalize query, expanding HKLM, HKCU, etc.
for /f "tokens=1* delims=\" %%I in ("%query%") do set "regpath=%hive%\%%~J"
if "%regpath:~-1%"=="\" set "regpath=%regpath:~0,-1%"

rem // /questions/144892/how-to-launch-windows-regedit-with-certain-path/851939#851939
>NUL 2>NUL (
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit"^
        /v "LastKey" /d "%regpath%" /f
)

echo %regpath%

start "" regedit
goto :EOF

@end // begin JScript hybrid chimera
// /questions/144893/access-clipboard-in-windows-batch-file/851946#851946
var clip = WSH.CreateObject('htmlfile').parentWindow.clipboardData.getData('text');

clip.replace(/"[^"]+"|\S+/g, function($0) {
    if (/^\"?(HK[CLU]|HKEY_)/i.test($0)) {
        WSH.Echo($0);
        WSH.Quit(0);
    }
});

Ответ 11

Вот простая функция PowerShell, основанная на этом ответе выше fooobar.com/questions/144892/...

function jumpReg ($registryPath)
{
    New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit" `
                     -Name "LastKey" `
                     -Value $registryPath `
                     -PropertyType String `
                     -Force

    regedit
}

jumpReg ("Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run") | Out-Null

Ответ выше не очень хорошо объясняет, что он делает. Когда вы закрываете RegEdit, он сохраняет ваше последнее известное положение в HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit, поэтому это просто заменяет последнюю известную позицию тем, куда вы хотите прыгать, а затем открывает ее.

Ответ 13

Вы можете заставить его выглядеть так, как это делает regedit, создав командный файл (из уже предоставленных материалов), но назовите его regedit.bat и поместите его в папку C:\WINDOWS\system32. (вам может потребоваться пропустить редактирование последнего ключа в реестре, если нет аргументов командной строки, поэтому "regedit" сам по себе работает, поскольку regedit всегда делал). Затем "regedit HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0" будет делать то, что вы хотите.

Это использует тот факт, что порядок в PATH обычно является C:\WINDOWS\system32; C:\WINDOWS; C:\WINDOWS\System32\Wbem; и т.д.