Compartir a través de


Leer y escribir en el Registro mediante el espacio de nombres Microsoft.Win32 (Visual Basic)

Aunque My.Computer.Registry debería cubrir sus necesidades básicas al programar con el registro, también puede usar las clases Registry y RegistryKey en el espacio de nombres Microsoft.Win32 de .NET.

Claves de la clase Registry

La clase Registry proporciona las claves base del Registro que se pueden usar para tener acceso a las subclaves y sus valores. Las claves base son de solo lectura. En la tabla siguiente se enumeran y se describen las siete claves expuestas por la clase Registry.

Key Descripción
ClassesRoot Define los tipos de documentos y las propiedades asociadas con esos tipos.
CurrentConfig Contiene información de configuración de hardware que no es específica del usuario.
CurrentUser Contiene información sobre las preferencias del usuario actual, como las variables de entorno.
DynData Contiene datos del Registro dinámicos, como los usados por los controladores de dispositivos virtuales.
LocalMachine Contiene cinco subclaves (Hardware, SAM, Security, Software y System) que almacenan los datos de configuración del equipo local.
PerformanceData Contiene información de rendimiento de los componentes de software.
Users Contiene información sobre las preferencias del usuario predeterminado.

Importante

Es más seguro escribir datos en el usuario actual (CurrentUser) que en el equipo local (LocalMachine). Cuando la clave que está creando fue creada anteriormente por otro proceso posiblemente malintencionado, se produce una condición normalmente conocida como "squatting". Para evitar que esto ocurra, use un método como GetValue, que devuelve Nothing si la clave no existe.

Leer un valor del Registro

En el código siguiente se muestra cómo leer una cadena de HKEY_CURRENT_USER.

Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
    intVersion = regVersion.GetValue("Version", 0)
    regVersion.Close()
End If

En el código siguiente se lee, se incrementa y, después, se escribe una cadena en HKEY_CURRENT_USER.

Dim regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
                  "SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
    ' Key doesn't exist; create it.
    regVersion = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(
                 "SOFTWARE\\Microsoft\\TestApp\\1.0")
End If

Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
    intVersion = regVersion.GetValue("Version", 0)
    intVersion = intVersion + 1
    regVersion.SetValue("Version", intVersion)
    regVersion.Close()
End If

Vea también