Leer y Escribir en el Registro de Windows desde C#

mayo 8 20102 comentarios

Guardado en : General

El Registro de Windows

El registro de Windows se crea durante la instalaci贸n del sistema operativo. Est谩 formado por seis apartados, llamados HKEYS (llaves), perfectamente estructurados y donde se guarda importante informaci贸n de cada aplicaci贸n o dispositivo conectado a nuestro ordenador, adem谩s de todas las claves de acceso.聽聽聽聽聽

HKEY_LOCAL_MACHINE: Es la llave m谩s importante, contiene las versiones de los controladores utilizados por nuestro hardware.聽聽聽聽聽

HKEY_CURRENT_CONFIG: M谩s informaci贸n sobre configuraci贸n de hardware, redes y seguridad.聽聽聽聽聽

HKEY_CLASSES_ROOT: Contiene los tipos de archivos utilizados y su asociaci贸n con cada programa en concreto, los directorios d贸nde est谩n instalados y los comandos de apertura.聽聽聽聽聽

HKEY_USERS: Contiene la informaci贸n de usuario, como el modo en que tenemos configurado que se presenten las carpetas, los salvapantallas, sonido, etc.聽聽聽聽聽

HKEY_CURRENT_USERS: El mismo tipo de informaci贸n que el anterior pero, guarda las configuraciones de varios usuarios.聽聽聽聽聽

聽Una secci贸n del Registro es un grupo de claves, subclaves y valores del Registro que cuentan con un conjunto de archivos auxiliares que contienen copias de seguridad de sus datos. Los archivos auxiliares de todas las secciones excepto HKEY_CURRENT_USER est谩n en la carpeta %SystemRoot%\System32\Config en Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003 y Windows Vista. Los archivos auxiliares para HKEY_CURRENT_USER est谩n en la carpeta %SystemRoot%\Profiles\nombreDeUsuario. Las extensiones de los archivos de estas carpetas indican el tipo de datos que contienen. A veces, la falta de extensi贸n tambi茅n puede indicar el tipo de datos que contienen.聽聽

Secci贸n del Registro聽聽聽聽聽

Archivos auxiliares聽聽聽聽聽

HKEY_LOCAL_MACHINE\SAM聽 Sam, Sam.log, Sam.sav聽
HKEY_LOCAL_MACHINE\Security聽 Security, Security.log, Security.sav聽
HKEY_LOCAL_MACHINE\Software聽 Software, Software.log, Software.sav聽
HKEY_LOCAL_MACHINE\System聽 System, System.alt, System.log, System.sav聽
HKEY_CURRENT_CONFIG聽 System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log聽
HKEY_USERS\DEFAULT聽 Default, Default.log, Default.sav聽

La siguiente tabla enumera los tipos de datos definidos actualmente que se usan en Windows. El tama帽o m谩ximo del nombre de un valor es el siguiente:聽聽聽聽聽

  • Windows Server 2003, Windows XP y Windows Vista: 16.383 caracteres
  • Windows 2000: 260 caracteres ANSI o 16.383 caracteres Unicode
  • Windows Millennium Edition/Windows 98/Windows 95: 255 caracteres

聽聽

Nombre Tipo de datos
Valor binario聽 REG_BINARY聽
Valor DWORD聽 REG_DWORD聽
Valor alfanum茅rico expandible聽 REG_EXPAND_SZ聽
Valor de cadena m煤ltiple聽 REG_MULTI_SZ聽
Valor de cadena聽 REG_SZ聽
Valor binario聽 REG_RESOURCE_LIST聽
Valor binario聽 REG_RESOURCE_REQUIREMENTS_LIST聽
Valor binario聽 REG_FULL_RESOURCE_DESCRIPTOR聽
Ninguna聽 REG_NONE聽
V铆nculo聽 REG_LINK聽
Valor QWORD聽 REG_QWORD聽

Leer y escribir en el Registro de Windows desde C#

Para trabajar con el Registro en C#, lo primero que debemos de hacer es agregar un namespace para poder utilizar las clases Registry y RegistryKey, que nos dan acceso a los elementos que intervienen en el control de registros. 聽Estas clases en conjunto nos permiten trabajar de una manera muy f谩cil con el Registro.聽聽聽聽聽

Using Microsoft.Win32;

聽聽

Accesando al registro de Windows y creando Subclaves

Despu茅s de haber agregado nuestro namespace, pasamos聽 a la parte interesante, comenzar a manipular el registro de Windows desde C#, Creamos una Instancia de RegistryKey como se muestra a continuaci贸n:聽聽聽聽聽

RegistryKey registryAccess = Registry.Users;


Hemos creado nuestra instancia de RegistryKey la cual hemos llamado registryAccess y la hemos inicializado para que sea la subclave HKEY_USERS en el registro, es decir que todos lo m茅todos que utilicemos afectaran directamente a las subclaves HKEY_USERS y sus datos.聽聽聽聽聽

registryAccess = registryAccess.OpenSubKey(".DEFAULT", true);

Con la linea de codigo anterior abrimos nuestra subclave 鈥.DEFAULT鈥 que se encuentra dentro de HKEY_USERS con el m茅todo OpenSubKey e indicamos si ser谩 de solo lectura (false) o lectura/escritura (true).聽聽聽聽聽

Ahora podemos crear una subclave dentro de la subclave superior que es 鈥.DEFAULT鈥, esto lo hacemos con el c贸digo que se muestra acontinuaci贸n:聽聽聽聽聽

registryAccess.CreateSubKey("AccessTime"); //Creamos una subclave llamada 鈥淎ccessTime鈥澛

Una subclave puede contener diferentes tipos de datos que anteriormente fueron mencionados la siguiente linea de codigo muestra como agregar valores a una subclave utilizando el metodo SetValue()聽聽聽聽聽

registryAccess.SetValue("Nombre","Registry in C#", RegistryValueKind.String);

聽聽聽聽聽

Eliminar un subclave utilizando DeleteSubKey() o DeleteSubKeyTree().

registryAccess.DeleteSubKey("AccessTime"); // Borrar una clave vac铆a聽
registryAccess.DeleteSubKeyTree("AccessTime");// Borrar una clave recursivamente, es decir, borra la subclave y todas las subclaves que se deriven de聽ella

Leer del Registro de Windows

La sentencia mostrada abajo obtiene el nombre de todos los valores en una subkey!聽聽聽聽聽

String[] values = registryAccess.GetValueNames();

O de esta otra forma聽聽聽聽

foreach(string Keyname in registryAccess.GetSubKeyNames())
{System.Console.WriteLine(Keyname);
}

聽聽聽聽

Comparte esta informaci贸n:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • LinkedIn
  • Technorati
  • TwitThis

Quiz谩 te interese :

Acerca del autor: Roberto Carlos

2 Respuestas a “Leer y Escribir en el Registro de Windows desde C#”

  1. Meta dice:

    Hola:

    驴C贸mo sabe que se trabaja en HKEY_USERS si no lo has indicado por ninguna parte?

    Saludo.

  2. Meta dice:

    Lo hice as铆:

    namespace regedit
    {
    public partial class Form1 : Form
    {
    RegistryKey registryAccess = Registry.Users;

    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    registryAccess = registryAccess.OpenSubKey(“.DEFAULT”, true);
    registryAccess.CreateSubKey(“AccessTime”); //Creamos una subclave llamada 鈥淎ccessTime鈥
    registryAccess.SetValue(“Nombre”, “Registry in C#”, RegistryValueKind.String);
    }

    private void button2_Click(object sender, EventArgs e)
    {
    registryAccess.DeleteSubKey(“AccessTime”); // Borrar una clave vac铆a
    registryAccess.DeleteSubKeyTree(“AccessTime”);// Borrar una clave recursivamente, es decir, borra la subclave y todas las subclaves que se deriven de ella
    }

    private void button3_Click(object sender, EventArgs e)
    {
    String[] values = registryAccess.GetValueNames();
    }
    }
    }

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

驴Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de c贸mo podemos mejorarlo para ti, 隆Por favor h谩znoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio 煤til y amigable y esperamos que disfrutes tu tiempo aqu铆.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->