miércoles, 17 de junio de 2009

Acceder, modificar, inserta y/o borrar registros desde C#

Enlace introduccion:
wikipedia

Enlace manipulación directa:
www.svetlian.com

Primero que nada como acceder al registro... para eso vamos a Inicio -> Ejecutar y ahí escribimos "regedit" (sin las comillas)... ahí vamos a poder ver mucha información de nuestra PC... y hay que tener mucho cuidado con borrar algo importante...
Cada clave tiene distintas entradas, y cada entrada tiene un nombre y un valor...

Ahora pasemos a la parte de código:

En C#, para manejar el registro utilizaremos la librería, Microsoft.Win32.
Esta librería incluye al tipo RegistryKey que es la que nos permite manejar los registros...

Los métodos de un objeto RegistryKey son:

OpenSubKey: para abrir una clave.

GetValue: Para obtener el valor de una entrada de la clave abierta. Ejemplo:

SetValue: Para crear una entrada nueva, o modificar el valor de una entrada.

DeleteValue
: Para borrar una entrada.

CreateSubKey: Para crear una clave de registro.

En este enlace estan explicados más metodos, que pueden ser de utilidad:
www.codeproject.com

Siempre lo primero que hay que hacer para abrir una clave, que puede contener a otras claves, como por ejemplo la clave SOFTWARE en LOCAL_MACHINE.
Se hace de la siguiente manera.

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);

Análogamente podríamos abrir cualquier otra clave. Por ejemplo:

Registry key = pRegKey.OpenSubKey(""SOFTWARE\\Notepad++\\Preferences");

En el segundo ejemplo se usan doble barras invertidas \\ para que el compilador entienda que debe poner una sola, ya que \ es un carácter de escape para el C#.

El segundo argumento, que puede ser true o false significa si la clave de registro que se desea abrir va a ser escrita o modificada (true) o solo lectura (false).


Los métodos GetValue, SetValue y DeleteValue se utilizan de manera similar una vez abierta la clave de registro.

Algunos ejemplos:
reg1.GetValue(“password”); // Toma el valor de la entrada “password” en la clave abierta.
reg1.SetValue(“Password”, “1234”); //modifica el valor de la entrada “password” en 1234. Si la //entrada no existiera la crea y le asigna ese valor.
reg1.DeleteValue(“password”); // Borra la entrada password.


En el caso de querer crear una clave de registro nueva utilizaremos el método CreateSubKey.
Primero tenemos que abrir la clave en donde se quiere crear la nueva clave, por ejemplo si lo queremos crear el SOFTWARE se hace de la siguiente manera.

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);
key.CreateSubkey(“nuevaclave”);
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\nuevaclave", true);

Primero abrimos la clave en donde se va a crear la nueva, después la creamos y después volvemos a abrir la nueva clave creada.

Ejemplo de código incrustado:

try
{//Borrar y crear despues.
Registry.LocalMachine.DeleteSubKey("SOFTWARE\\Notepad++\\Preferences");
RegistryKey mKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Notepad++ \\Preferences");
if (mKey == null)
{
MessageBox .Show ("Clave maestra vacía!");
}
else
{
MessageBox .Show ("MyKey",mKey.ToString());
}
mKey.Close();
bien = HolaMundo(bien);
labelDLL.Text = bien.ToString();
}
catch(){}

Enlace (con ejemplo).

1 comentario:

  1. Hola, buen ejemplo. En lo que puedas agregá las referencias y namespaces

    ResponderEliminar