Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[.NET] Escribir en el registro en C#

Participa en el tema [.NET] Escribir en el registro en C# en el foro Programación.
Hola a todos!! Necesito escribir en el registro de Windows unos datos y tambien leerlos ...

Buscar en este tema:
 
  •  
    leoleoleo17 escribió el 22/07/2007 a las 19:37 hs.
     
    ¿Mensaje inapropiado?
    4 links from elsewhere to this Post. Click to view. #1 [.NET] Escribir en el registro en C#
    Hola a todos!!

    Necesito escribir en el registro de Windows unos datos y tambien leerlos pero antes de meter la pata quiero hacer una consulta...
    Leyendo en internet vi que al registro se accede medianet un objeto RegistryKey y se abre de la siguiente manera (en C#):

    RegistryKey runK = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", false);

    Fijense que al final se pone false, pero vi otros ejemplos con true en lugar de false...

    Quiero saber que es lo que determina ese valor...
    Sospecho que se trata de si se va a modificar esa parte del registro o solo se va a leer. Pero estoy en duda y tengo miedo de meter la pata..


    Saludos!!

    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/486675-net-escribir-en-el-registro-c.html
    | Más
  • leoleoleo17 escribió el 22/07/2007 a las 22:25 hs. ¿Mensaje inapropiado?

    #2 Re: Escribir en el registro en C#

    Ya lo averigue probando jeje...

    Efectivamente, ese valor true o false significa si se puede o no se puede escribir en esa parte del registro...

    Disculpen las molestias...

    suerte!
    Me gusta este mensaje
  • leoleoleo17 escribió el 23/07/2007 a las 14:40 hs. ¿Mensaje inapropiado?

    #3 Re: Escribir en el registro en C#

    Ya que aprendí como manejar claves de registro en C# les voy a explicar como se hace para los que algún día lo necesiten...

    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...

    Algunos de los métodos que trae un objeto RegistryKey son:

    OpenSubKey: para abrir una clave.
    GetValue: Para obtener el valor de una entrada de la clave abierta
    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.


    Siempre lo primero que hay que hacer es abrir la 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("HARDWARE\\DESCRIPTION\\System\ \CentralProcessor\\0");

    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.

    Acá les dejo 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\nuevac lave", 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.


    Les recomiendo que jueguen mucho con el try y el catch para verificar si existen las claves o las entradas, ya que si no existen dará error en el try, y en el catch la pueden crear por ejemplo eso es lo que tuve que hacer yo.
    Considero que se un tema dentro de todo sencillo y rápido para aprender.
    Acá les dejo un ejemplo de código para que se orienten un poco más…


    Código:
    Using System;
    Using Microsoft.Win32;
       
      Public Class Seguridad {
          public Seguridad() 
          {
              try
              {
                  RegistryKey reg1 = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Phoning", true);
                  reg1.GetValue("pwd");
              }
              catch
              {
                  RegistryKey reg1 = Registry.LocalMachine.OpenSubKey(@"SOFTWARE", true);
                  reg1.CreateSubKey("Phoning");
                  reg1 = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Phoning", true);
                  reg1.SetValue("pwd", "phoning");
                 
              }
          }
       
          public bool verificarpass(string ingreso) 
          {
              string var1 = ingreso;
              RegistryKey reg1 = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Phoning");
              string var2 = Convert.ToString(reg1.GetValue("pwd"));
              if (ingreso == var2)
              {
                  return true;
              }
              else
              {
                  return false;
              }
              
          }
      }
    
    Espero que les sirva y cualquier consulta o crítica que tengan serán recibidas.
    Me gusta este mensaje
  • gmendez escribió el 14/09/2007 a las 12:46 hs. ¿Mensaje inapropiado?

    #4 Re: Escribir en el registro en C#

    Hola,
    no conocía esta web, pero me registré solo para decirte MUCHAS GRACIAS.
    Me salvaste la vida con lo del manejo del registro. No me había dado cuenta del método OpenSubKey con el 2o parámetro en true !!! Me volví loco revisando temas de seguridad del equipo, y la respuesta estaba casi frente a mi naríz.

    Saludos,

    Gonzalo
    Me gusta este mensaje
  • #5 Re: Escribir en el registro en C#

    Hola gente! gracias leo por la explicacion.
    ahora, yo necesito conocer como manejar el registro para, en el inicio, agregar un programa (o sea que al arrancar la sesión el programa se abra).

    Si alguien sabe decirme como es desde ya muchas gracias
    Me gusta este mensaje
  • #6 Re: Escribir en el registro en C#

    Tenés que crear una nueva clave en alguna de estas dos rutas:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run

    Si lo creás en la primera, el programa iniciará cuando inicies Windows en cualquier sesión.
    En cambio, creo que si lo creás en la segunda, iniciará sólo en el usuario actual. Creo q es así.
    Espero haber ayudado, Suerte
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación

LinkBacks: http://www.psicofxp.com/forums/programacion.313/486675-net-escribir-en-el-registro-c.html


Estadísticas del tema
  • 5 RESPUESTAS
  • 23247 VISTAS
  • 4 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB