2008-09-26 10 views
36

Wie starte ich Windows 'RegEdit mit bestimmten Pfad, wie "HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0", so muss ich nicht das Klicken tun?Wie startet Windows RegEdit mit bestimmten Pfad?

Wie lautet das Befehlszeilenargument? Oder gibt es einen Platz, um die Erklärung der Schalter von RegEdit zu finden?

Antwort

27

Es gibt ein Programm namens RegJump, von Mark Russinovich, das genau das tut, was Sie wollen. Es startet Regedit und verschiebt es über die Befehlszeile zu dem gewünschten Schlüssel.

RegJump verwendet (oder verwendet zumindest) dasselbe regedit-Fenster für jeden Aufruf. Wenn also mehrere regedit-Sitzungen geöffnet sein sollen, müssen Sie die Dinge auf die altmodische Art für alle außer RegJump machen angenommen. Eine kleine Einschränkung, aber eine, auf die man sich trotzdem konzentrieren sollte.

+1

Wie Matt Dillard in einer anderen Antwort darauf hingewiesen hat, gibt es auch Favoriten in regedit, so dass Sie innerhalb von regedit selbst schnell zu verschiedenen Schlüsseln Ihrer Wahl springen können. –

+3

Für Benutzer von Windows Vista/7/8: Sie können ['elevate'] installieren (http://technet.microsoft.com/en-us/magazine/2007.06.utilityspotlight.aspx), fügen Sie es zu Ihrem' PATH hinzu 'und dann Problem' Elevate regjump ', wenn Sie vorhaben, es von Ihrer Kommandozeile zu verwenden: http://superuser.com/a/42647/97570 –

+1

Wenn Sie RegJump nicht installieren möchten, versuchen Sie @ Byron-Persinos [ Antwort] (http://StackOverflow.com/a/12516008/4270771) stattdessen. Es ist leichter und erfordert keine Software von Drittanbietern. –

0

Diese schrecklich veraltet scheint, aber Registration Info Editor (REGEDIT) Command-Line Switches behauptet, dass es nicht diese Unterstützung.

+1

Das ist ein ganz anderes regedit ... Was wir regedit jetzt nennen, ist nicht dasselbe wie das regedit von Win3.x. http://support.microsoft.com/kb/141377/en-us –

2

Wie Chris erwähnt, RegJump wird den Trick tun.

Wenn Sie zwischen verschiedenen Pfaden hin und her springen, vergessen Sie nicht, dass Sie in Regedit "Favoriten" einstellen können. Es ist sehr praktisch, und Sie brauchen kein separates Desktop-Symbol für jedes einzelne (wie Sie mit RegJump).

5

Von http://windowsxp.mvps.org/jumpreg.htm (Ich habe nicht eine dieser versucht):

Wenn Sie Regedit starten, öffnet sich automatisch die letzte Taste, die angezeigt wurde. (Registrierungseditor in Windows XP speichert den zuletzt angezeigten Registrierungsschlüssel an einem separaten Speicherort). Wenn Sie direkt zu einem bestimmten Registrierungsschlüssel springen möchten, ohne die Pfade manuell zu navigieren, können Sie eine dieser Methoden/Tools verwenden.

Option 1
Mit einem VBScript: Kopieren Sie die folgenden Zeilen in einem Editor-Dokument als Ziel speichern unter 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 

Doppelklick Registry.vbs und dann den vollständigen Registry-Pfad eingeben, die Sie wollen öffnen.

Beispiel: HKEY_CLASSES_ROOT\.MP3

Einschränkung: Das obige Verfahren hilft nicht, wenn Regedit bereits geöffnet ist.

Hinweis: Für Windows 7 müssen Sie die Zeile MyKey = "My Computer\" & MyKey durch MyKey = "Computer\" & MyKey ersetzen (entfernen Sie die Zeichenfolge My). Bei einem deutschen Windows XP muss die Zeichenfolge "My Computer\" durch "Arbeitsplatz\" ersetzt werden.

Option 2
Regjump von Sysinternals.com

Diese kleinen Befehlszeilen Applet einen Registrierungspfad nimmt und Regedit offen für diesen Weg. Es akzeptiert Wurzelschlüssel in Standard (z. B. HKEY_LOCAL_MACHINE) und abgekürzter Form (z. B. HKLM).

Verbrauch: regjump [Pfad]

Beispiel: C:\Regjump HKEY_CLASSES_ROOT\.mp3

Option 3
12Ghosts JumpReg von 12ghosts.com

Jump Schlüssel von einem Tray-Icon in der Registrierung! Dies ist ein überraschend nützliches Werkzeug. Sie können häufig aufgerufene Registrierungsschlüssel verwalten und direkt dorthin springen. Unbegrenzte Listengröße, Sprung zu Schlüsseln und Werten, aktueller Schlüssel mit einem Klick, Sprung zu Schlüssel in Zwischenablage, Sprung zum selben Schlüssel in HKCU oder HKLM. Verwalten und sortieren Sie Schlüssel mit Kommentaren in einem einfach zu verwendenden Tray-Icon-Menü. Erstellen Sie Verknüpfungen für Registrierungsschlüssel.

4

Ich möchte auch darauf hinweisen, dass Sie die Registrierung in PowerShell anzeigen und bearbeiten können. Starten Sie es und verwenden Sie set-location, um den Registrierungsspeicher Ihrer Wahl zu öffnen. Der Kurzname eines HKEY wird wie ein Laufwerksbuchstabe im Dateisystem verwendet (um zu HKEY_LOCAL_MACHINE \ Software zu gelangen, würde man sagen: set-location hklm: \ Software).

Weitere Informationen zum Verwalten der Registrierung in PowerShell finden Sie, indem Sie get-help Registry an der PowerShell-Eingabeaufforderung eingeben.

24

Verwenden Sie die folgende Batchdatei (in den 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 

zu ersetzen:

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

mit Ihrem Registrierungspfad.

+0

Beste Antwort. Denken Sie daran, dass Sie 'cmd' mit Administratorrechten starten müssen, um die zweite Befehlsfunktion zu aktivieren, oder fügen Sie '&' zwischen den beiden Befehlen hinzu und führen Sie sie aus. – kokbira

+3

Ich denke, diese Antwort sollte als die richtige festgelegt werden, da es keine Software zum Herunterladen benötigt. – Karim

+0

Um ein Skript haben Sie können, fallen diese in einer BAT-Datei auszuführen: @echo off Satz/p regPath = "Open regedit im Pfad:" REG ADD HKCU \ Software \ Microsoft \ Windows \ Currentversion \ Applets \ Regedit/v Letzte Taste/t REG_SZ/d "% regPath%"/f START regedit –

1

eine BAT-Datei erstellen clipboard.exe mit und regjump.exe in der Zwischenablage in den Schlüssel zu springen:

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

(% ~ dp0 bedeutet "der Weg zur BAT-Datei")

+1

'Zwischenablage' wird nicht als interner oder externer Befehl erkannt, ausführbare Programm- oder Stapeldatei. – rojo

2

Ich dachte, dass diese C# -Lösung könnte helfen:

Durch die Verwendung eines früheren Vorschlags, können wir RegEdit zu öffnen, den Schlüssel, den wir wollen, obwohl wir den Schlüssel nicht als Parameter übergeben können.

In diesem Beispiel öffnet eine Menüoption von "Registrierungseinstellungen" RegEdit für den Knoten für das Programm, das es aufgerufen hat.

Programm der Form:

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

Natürlich könnte man alles in einem Verfahren der Form gebracht, aber Ich mag reusablity.

3

den unten stehenden Text kopieren und als Batch-Datei speichern und

@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 

Geben Sie den Pfad des Registrierungsschlüssels Sie öffnen wollen laufen, wenn die Batch-Datei für sie aufgefordert, und drücken Sie eingeben. Regedit öffnet den Schlüssel, der in diesem Wert definiert ist.

4

Hier ist eine weitere Batch-Datei-Lösung mit mehreren Verbesserungen im Vergleich zu den anderen Batch-Lösungen hier veröffentlicht.

Es setzt auch String-Wert LastKey von Regedit selbst bei jedem Ausgang aktualisiert, um nach dem Start den gleichen Schlüssel wie beim letzten Ausgang zu zeigen.

@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 

Die Verbesserungen sind:

  1. Registrierungspfad kann auch auf die Batch-Skript als Kommandozeilen-Parameter übergeben werden.

  2. Der Registrierungspfad kann mit oder ohne umgebende doppelte Anführungszeichen eingegeben oder eingefügt werden.

  3. Der Registrierungspfad kann eingegeben oder eingefügt oder als Parameter mit oder ohne umgebende eckige Klammern übergeben werden.

  4. Registrierungspfad kann eingegeben oder eingefügt werden oder als Parameter auch mit einem abgekürzten Stocknamen (HKCC, HKCU, HKCR, HKLM, HKU) übergeben werden.

  5. Batch-Skript prüft, ob Regedit bereits als Registrierungsschlüssel ausgeführt wird, wenn Regedit gestartet wird, während Regedit bereits ausgeführt wird. Der Batch-Benutzer wird gefragt, ob die laufende Instanz beendet werden soll, um sie neu zu starten, um den eingegebenen Registrierungspfad anzuzeigen. Wenn der Batch-Benutzer entscheidet, Regedit nicht zu beenden, wird Regedit gestartet, ohne dass der eingegebene Pfad festgelegt wird. Dies führt (normalerweise) dazu, dass das Regedit-Fenster in den Vordergrund gebracht wird.

  6. Die Batch-Datei automatisch versucht, Namen von Registrierungsstamm zu erhalten, die auf Englisch Windows XP Arbeitsplatz ist, auf Deutsch Windows XP, Arbeitsplatz und auf Windows 7 nur Computer-. Dies kann fehlschlagen, wenn der Wert LastKey von Regedit fehlt oder in der Registrierung leer ist. In diesem Fall geben Sie bitte den richtigen Stammnamen in der dritten Zeile des Stapelcodes ein.

+0

Ich führte Befehl mit "Computer" als root, obwohl meine Registrierung root war "Computador" (pt-br), und es hat gut funktioniert, unabhängig von der Stammname ... – kokbira

+1

@kokbira Schön zu wissen, dass diese Batch-Datei auch funktioniert Brasilien und dass es 'Computador' als root-Namen selbst herausfinden könnte, indem er den Code unter der Bezeichnung' GetRootName' verwendet und in Punkt 6 kurz erläutert wird. – Mofi

1

Aufbauend auf lionkingrafiki's answer, hier ist eine robustere Lösung, die einen reg Schlüsselpfad als Argument akzeptiert und wird automatisch übersetzen HKLM oder ähnlich HKEY_LOCAL_MACHINE nach Bedarf. Wenn kein Argument vorhanden ist, überprüft das Skript die Zwischenablage mit dem htmlfile COM-Objekt, das von JScript hybrid chimera aufgerufen wird. Die kopierten Daten werden aufgeteilt und in Token zerlegt, so dass es keine Rolle spielt, ob sie abgeschnitten werden oder ob es sich um einen ganzen Absatz von kopiertem Schmutz handelt. Und schließlich wird die Existenz des Schlüssels überprüft, bevor LastKey geändert wird. Schlüsselpfade, die Leerzeichen enthalten, müssen in doppelten Anführungszeichen stehen.

@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); 
    } 
}); 
0

Sie können es wie regedit erscheinen tut dieses Verhalten durch eine Batch-Datei erstellen (aus den Einreichungen bereits gegeben), aber es regedit.bat nennen und sie in das Verzeichnis C: \ WINDOWS \ System32 Ordner befindet. (Sie können wollen, dass es den letzten Schlüssel in der Registrierung bearbeitet, wenn keine Befehlszeilenargumente angegeben sind, so dass "regedit" für sich selbst funktioniert, wie es regedit immer tat). Dann "regedit HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 8.0" wird was tun Sie wollen.

Dies verwendet die Tatsache, dass die Reihenfolge in PATH normalerweise C: \ WINDOWS \ system32; C: \ WINDOWS; C: \ WINDOWS \ System32 \ Wbem; etc

1

Hier ist eine einfache Funktion Powershell basiert weg von dieser Antwort über https://stackoverflow.com/a/12516008/1179573

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 

Die Antwort oben eigentlich nicht sehr gut erklären, was es tut. Wenn Sie RegEdit schließen, speichert es Ihre letzte bekannte Position in HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit, so dass diese nur die letzte bekannte Position mit der Stelle ersetzt, an der Sie springen möchten, und öffnet sie dann.

Verwandte Themen