none
Lo mismo de txt pero con el regedit RRS feed

  • Pregunta

  • Hola:

    Quiero adaptar este código hecho en consola. En este caso guarda los valores en un archivo de texto, pero quiero que en esta ocasión lo guarde en el editor de registro de windows.

    Lo que hace este programa de abajo es crear un archivo txt, guardar un valor número 3 en él. Cada vez que inicia la aplicación, lee que datos tiene dicho archivo y cuando llegue a 0, crea otro archivo llamado Hola.txt y en su interior dice: Hola amigo.

    Código C#:

    using System;
    using System.IO;
    
    namespace Broma_Consola_02
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Variables.
                string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                string nombreArchivo = "Archivo.txt";
    
                // Comprueba si existe el archivo en dicha ruta.
                if (File.Exists(Path.Combine(path, nombreArchivo)))
                {
                    // Variable del contador.
                    int contador;
    
                    // Lee el fichero.
                    if (Int32.TryParse(File.ReadAllText(Path.Combine(path, nombreArchivo)), out contador))
                    {
                        // Si el contador es mayor que 0.
                        if (contador > 0)
                        {
                            // Sobre escribe el archivo con -1 su valor.
                            File.WriteAllText(Path.Combine(path, nombreArchivo), $"{contador -= 1}");
                        }
    
                        // Si el contador es igual a 0.
                        if (contador == 0)
                        {
                            // Escribe un nuevo arhivo de texto con su contenido correspondiente.
                            File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
                        }
                    }
    
                    // Entonces.
                    else
                    {
                        Console.WriteLine("El archivo contiene un valor no esperado.");
                    }
                }
    
                // Entonces.
                else
                {
                    // Escribe el archivo con el valor 3 en Archivo.txt.
                    File.WriteAllText(Path.Combine(path, nombreArchivo), "3");
                }
    
                //Console.ReadKey(); // Pulse cualquier tecla para salir.
            }
        }
    }
    ¿Cómo hago lo mismo solo usando el regedit o editor de registro?

    Saludos.


    http://electronica-pic.blogspot.com

    viernes, 23 de marzo de 2018 6:32

Respuestas

  • Buenas Metaconta

    Te dejo un link sobre como puedes editar el registro de Windows:

    Método Registry.SetValue (String, String, Object)

    En el se ve como operar el registro para leer y escribir claves, de todos modos, he adaptado tu código para que opere sobre el registro directamente:

    using System;
    using System.IO;
    using Microsoft.Win32;
    
    namespace Broma_Consola_02
    {
      class Program
      {
        static void Main(string[] args)
        {
          //Root
          const string userRoot = "HKEY_CURRENT_USER";
          //Clave
          const string subkey = "Metaconta";
          //FullName
          const string keyName = userRoot + "\\" + subkey;
          //ValueName
          const string valuename = "Contador";
    
          // Variables Txt
          string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    
          //Si no existe la Key, dara -1
          int contador = Convert.ToInt32(Registry.GetValue(keyName, valuename, -1) ?? -1);
    
          // Comprueba si la key, al ser -1 si la key no existe
          if (contador >= 0)
          {
            // Si el contador es mayor que 0.
            if (contador > 0)
            {
              // Sobre escribe la key con -1 su valor.
              Registry.SetValue(keyName, valuename, contador -= 1);
            }
    
            // Si el contador es igual a 0.
            if (contador == 0)
            {
              // Escribe un nuevo arhivo de texto con su contenido correspondiente.
              File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
            }
    
          }
          // Entonces.
          else
          {
            //Escribo en el registro el valor
            Registry.SetValue(keyName, valuename, 3);        
          }
        }
      }
    }

    Échale un ojo y nos comentas

    Atte



    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta Metaconta viernes, 23 de marzo de 2018 20:53
    viernes, 23 de marzo de 2018 10:24

Todas las respuestas

  • Buenas Metaconta

    Te dejo un link sobre como puedes editar el registro de Windows:

    Método Registry.SetValue (String, String, Object)

    En el se ve como operar el registro para leer y escribir claves, de todos modos, he adaptado tu código para que opere sobre el registro directamente:

    using System;
    using System.IO;
    using Microsoft.Win32;
    
    namespace Broma_Consola_02
    {
      class Program
      {
        static void Main(string[] args)
        {
          //Root
          const string userRoot = "HKEY_CURRENT_USER";
          //Clave
          const string subkey = "Metaconta";
          //FullName
          const string keyName = userRoot + "\\" + subkey;
          //ValueName
          const string valuename = "Contador";
    
          // Variables Txt
          string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    
          //Si no existe la Key, dara -1
          int contador = Convert.ToInt32(Registry.GetValue(keyName, valuename, -1) ?? -1);
    
          // Comprueba si la key, al ser -1 si la key no existe
          if (contador >= 0)
          {
            // Si el contador es mayor que 0.
            if (contador > 0)
            {
              // Sobre escribe la key con -1 su valor.
              Registry.SetValue(keyName, valuename, contador -= 1);
            }
    
            // Si el contador es igual a 0.
            if (contador == 0)
            {
              // Escribe un nuevo arhivo de texto con su contenido correspondiente.
              File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
            }
    
          }
          // Entonces.
          else
          {
            //Escribo en el registro el valor
            Registry.SetValue(keyName, valuename, 3);        
          }
        }
      }
    }

    Échale un ojo y nos comentas

    Atte



    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta Metaconta viernes, 23 de marzo de 2018 20:53
    viernes, 23 de marzo de 2018 10:24
  • Por cierto. Si quiero borrar en el registro Metaconta y todo su contenido.

    ¿Cómo se hace?


    http://electronica-pic.blogspot.com

    sábado, 24 de marzo de 2018 7:52