2008-09-26 20 views
36

¿Cómo ejecuto Windows 'RegEdit con cierta ruta ubicada, como "HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0", por lo que no tengo que hacer el clic?¿Cómo iniciar Windows 'RegEdit con cierta ruta?

¿Cuál es el argumento de la línea de comandos para hacer esto? ¿O hay un lugar para encontrar la explicación de los interruptores de RegEdit?

Respuesta

27

Hay un programa llamado RegJump, de Mark Russinovich, que hace justo lo que quiere. Lanzará regedit y lo moverá a la clave que desee desde la línea de comando.

RegJump utiliza (o al menos solía) usar la misma ventana regedit en cada invocación, por lo que si quiere abrir múltiples sesiones regedit, igual tendrá que hacer las cosas a la antigua para todos menos uno RegJump adoptado. Una advertencia menor, pero de la que hay que tener nota, de todos modos.

+1

Como Matt Dillard señaló en otra respuesta aquí, también hay Favoritos en regedit, por lo que puede saltar rápidamente a diferentes claves de su elección dentro de Regedit. –

+3

Para usuarios de Windows Vista/7/8: es posible que desee instalar ['elevate'] (http://technet.microsoft.com/en-us/magazine/2007.06.utilityspotlight.aspx), agréguelo a su' PATH 'y luego emita' eleve regjump 'si planea usarlo desde su línea de comando: http://superuser.com/a/42647/97570 –

+1

Si no desea instalar RegJump, intente con @ byron-persino's [ respuesta] (http://stackoverflow.com/a/12516008/4270771) en su lugar. Es más ligero y no requiere ningún software de terceros. –

0

Esto parece terriblemente fuera de fecha, pero Registration Info Editor (REGEDIT) Command-Line Switches afirmaciones de que no lo hace apoyar esto.

+1

Eso es un regedit completamente diferente ... Lo que llamamos regedit ahora no es lo mismo que el regedit de Win3.x. http://support.microsoft.com/kb/141377/en-us –

2

Como Chris menciona, RegJump hará el truco.

Además, si se encuentra yendo y viniendo entre varias rutas diferentes, no olvide que puede establecer "Favoritos" en Regedit. Es bastante conveniente, y no necesitará un ícono de escritorio separado para cada uno (como lo haría con RegJump).

5

De http://windowsxp.mvps.org/jumpreg.htm (no he probado ninguno de estos):

Al iniciar Regedit, se abre automáticamente la última tecla que fue visto. (El Editor del Registro en Windows XP guarda la última clave de registro vista en una ubicación diferente). Si desea ir directamente a una clave de registro particular sin navegar manualmente las rutas, puede usar cualquiera de estos métodos/herramientas.

Opción 1
El uso de un VBScript: Copie estas líneas a un documento de Bloc de notas como guardar como 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 

doble clic Registry.vbs y luego escriba la ruta completa del registro que desea abrir.

Ejemplo: HKEY_CLASSES_ROOT\.MP3

Limitación: El método anterior no ayuda si Regedit ya está abierto.

Nota: Para Windows 7, debe reemplazar la línea MyKey = "My Computer\" & MyKey con MyKey = "Computer\" & MyKey (elimine la cadena My). Para un Windows XP alemán, la cadena "My Computer\" debe reemplazarse por "Arbeitsplatz\".

Opción 2
regjump de Sysinternals.com

Este pequeño applet de la línea de comandos toma una ruta de registro y hace Regedit abierto a ese camino. Acepta claves de raíz en forma estándar (por ejemplo, HKEY_LOCAL_MACHINE) y abreviada (por ejemplo, HKLM).

Uso: regjump [ruta]

Ejemplo: C:\Regjump HKEY_CLASSES_ROOT\.mp3

Opción 3
12Ghosts JumpReg de 12ghosts.com

Saltar a las claves del registro de un icono de la bandeja! Esta es una herramienta sorprendentemente útil. Puede administrar y saltar directamente a las claves de registro de acceso frecuente. Ilimitado tamaño de lista, saltar a claves y valores, obtener la clave actual con un clic, saltar a la tecla en el portapapeles, saltar a la misma tecla en HKCU o HKLM. Administre y clasifique claves con comentarios en un menú de icono de bandeja fácil de usar. Crear accesos directos para las claves de registro.

4

También me gustaría tener en cuenta que puede ver y editar el registro desde dentro de PowerShell. Láncelo y use set-location para abrir la ubicación de registro de su elección. El nombre corto de un HKEY se usa como una letra de unidad en el sistema de archivos (para ir a HKEY_LOCAL_MACHINE \ Software, usted diría: set-location hklm: \ Software).

Puede encontrar más detalles sobre la administración del registro en PowerShell escribiendo get-help Registry en el símbolo del sistema de PowerShell.

24

utilizar el siguiente archivo por lotes (añadir a 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 

para reemplazar:

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

con su ruta de registro.

+0

La mejor respuesta. Recordando que debe iniciar 'cmd' con privilegios de administrador para hacer que funcione el segundo comando, o puede agregar' & 'entre los dos comandos y ejecutar. – kokbira

+3

Creo que esta respuesta debe establecerse como la correcta, ya que no necesita ningún software para descargar. – Karim

+0

tener un script que puede ejecutar, deje caer esto en un archivo .bat: @echo off set/p RegPath = "regedit abierta en ruta:" REG ADD HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Applets \ Regedit/v LastKey/t REG_SZ/d "% regPath%"/f START regedit –

1

Crear un archivo BAT usando clipboard.exe y regjump.exe para saltar a la llave en el portapapeles:

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

(% ~ dp0 significa "la ruta al archivo BAT")

+1

'portapapeles' no se reconoce como un comando interno o externo, programa operable o archivo por lotes. – rojo

2

Pensé que esta solución de C# podría ayudar:

Al hacer uso de una sugerencia anterior, podemos engañar a RegEdit para que abra la clave que queremos aunque no podamos pasar la clave como parámetro.

En este ejemplo, una opción de menú de "Configuración del registro" abre RegEdit al nodo para el programa que lo llamó. forma

del Programa:

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

Por supuesto, usted podría poner todo en un solo método de la forma, pero me gusta reusablity.

3

Copia el siguiente texto y guardarlo como un archivo por lotes y ejecutar

@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 

entrada del camino de la clave de registro que desea abrir cuando el archivo por lotes pedirá que lo haga, y presione Enter . Regedit se abre a la clave definida en ese valor.

4

Aquí hay una solución más de archivos por lotes con varias mejoras en comparación con las otras soluciones por lotes publicadas aquí.

También establece el valor de cadena LastKey actualizado por Regedit en cada salida para mostrar después de iniciar la misma clave que en la última salida.

@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 

Las mejoras son:

  1. ruta del registro se puede pasar también como parámetro de línea de comando para la secuencia de comandos por lotes.

  2. La ruta de acceso del registro se puede ingresar o pegar con o sin comillas dobles adyacentes.

  3. La ruta del registro se puede ingresar o pegar o pasar como parámetro con o sin corchetes circundantes.

  4. La ruta del registro se puede ingresar o pegar o pasar como parámetro también con un nombre de sección abreviado (HKCC, HKCU, HKCR, HKLM, HKU).

  5. El script de lote comprueba si ya se está ejecutando Regedit como clave de registro cuando se inicia Regedit mientras Regedit ya se está ejecutando. Al usuario del proceso por lotes se le pregunta si se debe eliminar la instancia en ejecución para reiniciarlo y mostrar la ruta de registro ingresada. Si el usuario del lote decide no matar a Regedit, Regedit se inicia sin configurar la ruta ingresada como resultado (generalmente) al hacer que la ventana de Regedit aparezca en primer plano.

  6. El archivo por lotes intenta controlar automáticamente el nombre de la raíz del registro que se encuentra en Inglés de Windows XP Mi PC, en alemán de Windows XP, Arbeitsplatz, y en Windows 7 acaba ordenador. Esto podría fallar si el valor LastKey de Regedit falta o está vacío en el registro. En este caso, establezca el nombre de raíz correcto en la tercera línea del código de lote.

+0

Realicé el comando con "Equipo" como raíz, aunque mi raíz de registro era "Computador" (pt-br), y funcionó bien, independientemente del nombre raíz ... – kokbira

+1

@kokbira Es bueno saber que este archivo por lotes también funciona para Brasil y que podría encontrar 'Computador' como nombre de raíz por sí mismo usando el código debajo de la etiqueta' GetRootName' y explicado brevemente en el punto 6. – Mofi

1

Basándose en lionkingrafiki's answer, aquí es una solución más robusta que aceptará un camino llave del registro como un argumento y se traducirá automáticamente HKLM a HKEY_LOCAL_MACHINE o similares, según sea necesario. Si no hay argumento, el script verifica el portapapeles utilizando el objeto COM htmlfile invocado por un JScript hybrid chimera. Los datos copiados se dividirán y se convertirán en token, por lo que no importa si no se recortan o incluso entre un párrafo entero de suciedad copiada. Y finalmente, la existencia de la clave se verifica antes de que se modifique LastKey. Las rutas clave que contienen espacios deben estar entre comillas dobles.

@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

Puede hacer que parezca como regedit hace este comportamiento mediante la creación de un archivo por lotes (de las presentaciones ya dada), pero lo llaman regedit.bat y la puso en la carpeta C: \ WINDOWS \ system32. (Es posible que desee omitir la edición de la última clave en el registro si no se proporcionan argumentos de línea de comandos, por lo que "regedit" en sus propios trabajos como siempre lo hizo regedit) Entonces "regedit HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 8.0" hará lo usted quiere.

Esto utiliza el hecho de que el orden en PATH suele ser C: \ WINDOWS \ system32; C: \ WINDOWS; C: \ WINDOWS \ System32 \ Wbem; etc

1

Aquí es una función sencilla PowerShell con sede fuera de esta respuesta por encima de 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 

La respuesta anterior en realidad no explica muy bien lo que hace. Cuando cierra RegEdit, guarda su última posición conocida en HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit, por lo que simplemente reemplaza la última posición conocida con la que desea saltar, luego la abre.

Cuestiones relacionadas