Leer y escribir en el Registro mediante Microsoft.Win32 Namespace

Actualización: noviembre 2007

Aunque My.Computer.Registry debe satisfacer 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 Framework.

Claves en la clase de Registro

La clase Registry proporciona las claves de Registro básicas que se pueden utilizar para el acceso a las subclaves y a sus valores. Las propias claves básicas son de sólo lectura. La tabla siguiente enumera y describe las siete claves expuestas por la clase Registry.

Clave

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, tal como variables de entorno.

DynData

Contiene datos del Registro dinámicos, como los usados por los controladores de dispositivo virtual.

LocalMachine

Contiene cinco subclaves (Hardware, SAM, Security, Software y System) que contienen los datos de configuración del equipo local.

PerformanceData

Contiene información de rendimiento para los componentes de software.

Users

Contiene información sobre las preferencias del usuario predeterminado.

Nota de seguridad:

Resulta más seguro escribir datos en el usuario actual (CurrentUser) que en el equipo local (LocalMachine). Cuando la clave que se va a crear ha sido creada previamente por otro proceso, posiblemente malintencionado, se produce una condición que suele conocerse como "squatting" ("ocupación"). Para evitar que aparezca, utilice un método, como GetValue que devuelve Nothing si la clave ya no existe.

Leer un valor del Registro

El código siguiente muestra cómo se lee una cadena de HKEY_CURRENT_USER.

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

El código siguiente lee, se incrementa y escribe una cadena en HKEY_CURRENT_USER-

Dim regVersion As Microsoft.Win32.RegistryKey
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 (Not regVersion Is Nothing) Then
    intVersion = regVersion.GetValue("Version", 0)
    intVersion = intVersion + 1
    regVersion.SetValue("Version", intVersion)
    regVersion.Close()
End If

Vea también

Tareas

Solución de problemas: Manipulación del Registro

Conceptos

Información general sobre el control estructurado de excepciones de Visual Basic

Tareas habituales del Registro

Seguridad y Registro

Leer y escribir en el Registro con Mi

Referencia

SystemException

ApplicationException

My.Computer.Registry (Objeto)