Trabajar con Entradas de Registro

  • 06/05/2017
  • 5 minutos para leer
    • j
    • s
    • k
    • m
    • b

Debido a que las entradas del registro son las propiedades de las claves y, como tal, no puede ser directamente navegado, tenemos que tomar un enfoque ligeramente diferente cuando se trabaja con ellos.

Listar entradas de registro

Hay muchas maneras diferentes de examinar las entradas de registro. La forma más sencilla es obtener los nombres de propiedad asociados a una clave. Por ejemplo, para ver los nombres de las entradas en la clave de registroHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, use Get-Item. Claves de registro tiene una propiedad con el nombre genérico de «Propiedad» que es una lista de entradas de registro en la clave.El siguiente comando selecciona la propiedad propiedad y expande los elementos para que se muestren en una lista:

DevicePathMediaPathUnexpandedProgramFilesDirCommonFilesDirProductId

Para ver las entradas del registro de una forma más legible, use Get-ItemProperty:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Todas las propiedades relacionadas con Windows PowerShell para la clave tienen el prefijo «PS», como asPSPath, PSParentPath, PSChildName, y PSProvider.

Puede usar la notación *.* para referirse a la ubicación actual. Puede usar Set-Location para cambiar primero al contenedor de registro de conversión actual:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Alternativamente, puede usar el HKLM PSDrive incorporado con Set-Location:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

A continuación, puede usar la notación *.* para la notación ubicación actual para listar las propiedades sin especificar una ruta de acceso completa:

Get-ItemProperty -Path .
...DevicePath : C:\WINDOWS\infMediaPathUnexpanded : C:\WINDOWS\MediaProgramFilesDir : C:\Program Files...

La expansión de la ruta funciona de la misma manera que en el sistema de archivos, por lo que desde esta ubicación puede obtener la lista de propiedades de HKLM:\SOFTWARE\Microsoft\Windows\Help utilizandoGet-ItemProperty -Path ..\Help.

Obtener una sola entrada de registro

Si desea recuperar una entrada específica de una clave de registro, puede utilizar uno de los varios enfoques posibles. Este ejemplo encuentra el valor de DevicePath enHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.

UsandoGet-ItemProperty, utilice el parámetro Path para especificar el nombre de la clave y el parámetro NombrePara especificar el nombre de la entrada DevicePath.

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath

Este comando devuelve las propiedades estándar de Windows PowerShell, así como la propiedad DevicePath.

Nota

Aunque Get-ItemProperty tiene parámetros de Filtro, Inclusión y exclusión, no se pueden usar para filtrar por nombre de propiedad. Estos parámetros se refieren a claves de registro, que son itempaths y no entradas de registro, que son propiedades de elementos.

Otra opción es usar el Reg.herramienta de línea de comandos exe. Por ayuda con reg.exe, escriba reg.exe /? en un símbolo del sistema. Para encontrar la entrada DevicePath, utilice reg.exe como se muestra en el siguiente comando:

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

También puede usar el objeto COM de WshShell para encontrar algunas entradas de registro, aunque este método no funciona con datos binarios grandes ni con nombres de entrada de registro que incluyan caracteres como «\»). Añada el nombre de la propiedad a la ruta de acceso del elemento con un \ separator:

(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

Establecer una sola entrada de registro

Si desea cambiar una entrada específica en una clave de registro, puede utilizar uno de los varios métodos posibles. Este ejemplo modifica la entrada de ruta en HKEY_CURRENT_USER\Environment. La entrada Path especifica dónde encontrar los archivos ejecutables.

  1. Recupere el valor actual de la entrada de ruta usando Get-ItemProperty.
  2. Agregue el nuevo valor, separándolo con un ;.
  3. Use Set-ItemProperty con la clave, el nombre de entrada y el valor especificados para modificar la entrada de registro.

Nota

Aunque Set-ItemProperty tiene parámetros de Filtro, Inclusión y exclusión, no se pueden usar para filtrar por nombre de propiedad. Estos parámetros se refieren a claves de registro, que son itempaths, y no a entradas de registro, que son propiedades de elementos.

Otra opción es usar el Reg.herramienta de línea de comandos exe. Por ayuda con reg.exe, escribe reg.¿exe?en un símbolo del sistema.

El siguiente ejemplo cambia la entrada de ruta eliminando la ruta añadida en el ejemplo anterior.Get-ItemProperty se sigue utilizando para recuperar el valor actual para evitar tener que analizar la cadena devuelta de reg query. Los métodos SubString y lastIndexOf se utilizan para recuperar la última ruta añadida a la entrada de ruta.

The operation completed successfully.

la Creación de Nuevas Entradas de Registro

Para agregar una nueva entrada llamada «PowerShellPath» a la CurrentVersion clave, utilice New-ItemPropertycon la ruta de la clave, el nombre de la entrada, y el valor de la entrada. En este ejemplo, tomaremos el valor de la variable de Windows PowerShell $PSHome, que almacena la ruta de acceso al directorio de instalación de Windows PowerShell.

Puede agregar la nueva entrada a la clave utilizando el siguiente comando, y el comando también devuelve información sobre la nueva entrada:

El tipo de propiedad debe ser el nombre de un Microsoft.Win32.RegistryValueKind miembro de la enumeración de la siguiente tabla:

PropertyType Value Meaning
Binary Binary data
DWord A number that is a valid UInt32
ExpandString A string that can contain environment variables that are dynamically expanded
MultiString A multiline string
String Any string value
QWord 8 bytes of binary data

Nota

Puede agregar una entrada de registro a varias ubicaciones especificando una matriz de valores para el parámetro Path:

También puede sobrescribir un valor de entrada de registro preexistente agregando el parámetro Force a cualquier.

Cambiar el nombre de las entradas del registro

Para cambiar el nombre de la entrada PowerShellPath a «PSHome», use Rename-ItemProperty:

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

Para mostrar el valor renombrado, agregue el parámetro PassThru al comando.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

Eliminar Entradas de Registro

eliminar el PSHome y PowerShellPath entradas del registro, utilice Remove-ItemProperty:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *