script modify desde abrir command-line regedit

command-line - desde - modify registry key command line



¿Cómo iniciar Windows ''RegEdit con cierta ruta? (13)

¿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?

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


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

Cuando inicia Regedit, abre automáticamente la última clave que se visualizó. (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
Usando un VBScript: copie estas líneas en un documento del 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

Haga doble clic en Registry.vbs y luego escriba la ruta de registro completa 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/" .

opcion 2
Regjump de Sysinternals.com

Este pequeño applet de línea de comandos toma una ruta de registro y hace que Regedit se abra en esa ruta. Acepta claves de raíz en forma estándar (por ejemplo, HKEY_LOCAL_MACHINE) y abreviada (por ejemplo, HKLM).

Uso: regjump [camino]

Ejemplo: C:/Regjump HKEY_CLASSES_ROOT/.mp3

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

¡Salta a las claves de registro desde el icono de una 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.


Como Chris menciona, RegJump hará el truco.

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


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

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


También me gustaría señalar que puede ver y editar el registro desde 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).

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


Utilice el siguiente archivo por lotes (agregar 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 tu ruta de registro


Cree un archivo BAT utilizando clipboard.exe y regjump.exe para saltar a la clave en el portapapeles:

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

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



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, podrías ponerlo todo en un método de la forma, pero me gusta reusablity.


Copie el texto a continuación y guárdelo como un archivo por lotes y ejecútelo

@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

Ingrese la ruta de la clave de registro que desea abrir cuando el archivo por lotes lo solicite y presione Entrar . Regedit se abre a la clave definida en ese valor.


Puede hacer que parezca que regedit realiza este comportamiento al crear un archivo por lotes (a partir de los envíos ya proporcionados), pero llámelo regedit.bat y póngalo 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


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. La ruta del registro también se puede pasar como parámetro de línea de comando al script por lotes.

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

  3. La ruta del registro se puede ingresar, 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 Regedit aparezca en primer plano.

  6. El archivo por lotes intenta obtener automáticamente el nombre de la raíz del registro que está en inglés Windows XP My Computer , en alemán Windows XP, Arbeitsplatz y en Windows 7 simplemente Computer . Esto podría fallar si falta el valor LastKey of Regedit 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.


Aquí hay una función simple de PowerShell basada en esta respuesta anterior https://.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 y luego la abre.


Sobre la base de la respuesta de lionkingrafiki , aquí hay una solución más robusta que aceptará una ruta de clave de registro como argumento y traducirá automáticamente HKLM a HKEY_LOCAL_MACHINE o similar según sea necesario. Si no hay argumento, el script verifica el portapapeles utilizando el objeto COM htmlfile invocado por una quimera híbrida de JScript . 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://.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://.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); } });