web-dev-qa-db-ja.com

特定のパスでWindowsのRegEditを起動する方法は?

Windowsを起動するにはどうすればよいですか RegEditHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0 "、クリックする必要はありませんか?

これを行うためのコマンドライン引数は何ですか?または、RegEditのスイッチの説明を見つける場所はありますか?

37
XTL

Mark Russinovichによる RegJump というプログラムがあります。 regeditを起動し、コマンドラインから目的のキーに移動します。

RegJumpは、各呼び出しで同じregeditウィンドウを使用します(または少なくとも使用します)。したがって、複数のregeditセッションを開く場合は、RegJumpが採用しているものを除くすべてに対して、従来の方法で行う必要があります。とにかく、小さな警告ですが、注意してください。

29

次のバッチファイルを使用します(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

レジストリパスを使用します。

25
Byron Persino

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
Sysinternals.comからの登録

この小さなコマンドラインアプレットはレジストリパスを取得し、Regeditをそのパスに対して開きます。標準(HKEY_LOCAL_MACHINEなど)および省略形(HKLMなど)のルートキーを受け入れます。

使用法:regjump [パス]

例:C:\Regjump HKEY_CLASSES_ROOT\.mp3

オプション3
12ghosts.comの12Ghosts JumpReg

トレイアイコンからレジストリキーにジャンプします!これは驚くほど便利なツールです。管理し、頻繁にアクセスするレジストリキーに直接ジャンプできます。リストサイズは無制限、キーと値にジャンプ、ワンクリックで現在のキーを取得、クリップボードのキーにジャンプ、HKCUまたはHKLMのキーに同じキーにジャンプ。使いやすいトレイアイコンメニューでコメント付きのキーを管理および並べ替えます。レジストリキーのショートカットを作成します。

5
The Hoss

PowerShell内からレジストリを表示および編集できることにも注意してください。それを起動し、set-locationを使用して、選択したレジストリの場所を開きます。 HKEYの短縮名は、ファイルシステムのドライブ文字のように使用されます(したがって、HKEY_LOCAL_MACHINE\Softwareに移動するには、set-location hklm:\ Softwareと言います)。

PowerShellでのレジストリ管理の詳細については、PowerShellコマンドプロンプトで「get-help Registry」と入力してください。

4

ここに投稿された他のバッチソリューションと比較して、いくつかの機能強化を加えたもう1つのバッチファイルソリューションを示します。

また、すべての出口でRegedit自体によって更新される文字列値LastKeyを設定し、開始後に最後の出口と同じキーを表示します。

@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

機能強化は次のとおりです。

  1. レジストリパスは、コマンドラインパラメーターとしてバッチスクリプトに渡すこともできます。

  2. レジストリパスは、二重引用符で囲むかどうかに関係なく入力または貼り付けできます。

  3. レジストリパスは、周囲の角括弧の有無にかかわらず、パラメータとして入力または貼り付け、または渡すことができます。

  4. レジストリパスは、省略形のHive名(HKCC、HKCU、HKCR、HKLM、HKU)を使用してパラメーターとして入力または貼り付け、または渡すことができます。

  5. Regeditが既に実行されているときにRegeditを起動すると、レジストリキーが表示されないため、バッチスクリプトはすでに実行されているRegeditをチェックします。バッチユーザーは、入力されたレジストリパスを表示するために、実行中のインスタンスを強制終了して再起動するかどうかを尋ねられます。バッチユーザーがRegeditを強制終了しないことを選択した場合、入力されたパスを設定せずにRegeditが開始され、通常はRegeditウィンドウがフォアグラウンドになります。

  6. バッチファイルは、英語のWindows XP マイコンピューター、ドイツのWindows XPではArbeitsplatzにあるレジストリルートの名前を自動的に取得しようとします。およびWindows 7でComputer。RegeditのLastKeyの値が見つからないか空の場合、これは失敗する可能性があります。この場合、バッチの3行目に正しいルート名を設定してくださいコード。

4
Mofi

以下のテキストをコピーし、バッチファイルとして保存して実行します

@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は、その値で定義されたキーを開きます。

3

このC#ソリューションが役立つと思いました:

キーをパラメーターとして渡すことはできませんが、以前の提案を利用することで、RegEditをだまして必要なキーを開くことができます。

この例では、[レジストリ設定]のメニューオプションにより、それを呼び出したプログラムのノードに対してRegEditが開きます。

プログラムの形式:

    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");
    }

もちろん、すべてをフォームの1つのメソッドに入れることもできますが、私は再利用が好きです。

2
Clint StLaurent

上記の回答に基づいた単純なPowerShell関数を次に示します https://stackoverflow.com/a/12516008/117957

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に保存されるため、最後の既知の位置が単にジャンプしたい場所に置き換えられてから開きます。

1
Alex Kwitny

lionkingrafiki's answer に基づいて、regキーパスを引数として受け入れ、HKLMを必要に応じてHKEY_LOCAL_MACHINEまたは同様のものに自動的に変換する、より堅牢なソリューションを次に示します。引数がない場合、スクリプトは JScriptハイブリッドキメラ によって呼び出されたhtmlfile COMオブジェクトを使用してクリップボードをチェックします。コピーされたデータは分割されてトークン化されるため、トリミングされていない場合でも、コピーされた汚れの段落全体であっても問題ありません。そして最後に、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 // https://stackoverflow.com/a/22697203/1683264
>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
// https://stackoverflow.com/a/15747067/1683264
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);
    }
});
1
rojo

Clipboard.exeおよびregjump.exeを使用してBATファイルを作成し、クリップボードのキーにジャンプします。

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

(%〜dp0は「BATファイルへのパス」を意味します)

1
Jack

Regeditは、バッチファイルを作成して(既に指定されている送信から)この動作を行うように見せることができますが、regedit.batと呼び、C:\ WINDOWS\system32フォルダーに配置します。 (コマンドライン引数が指定されていない場合は、レジストリの最後のキーの編集をスキップすることができます。したがって、regeditが常に行っていたように独自の "regedit"が動作します)あなたが欲しい。

これは、PATHの順序が通常C:\ WINDOWS\system32; C:\ WINDOWS; C:\ WINDOWS\System32\Wbemであるという事実を使用しています。等

0
martski

これは恐ろしく古くなっているようですが、登録情報エディター(REGEDIT)コマンドラインスイッチはそれを主張していますdoes n'tはこれをサポートします。

0
Simon Buchan