Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - ¿Cómo leer y escribir parámetros de configuración en C#?
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information ¿Cómo leer y escribir parámetros de configuración en C#?

Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: ¿Cómo leer y escribir parámetros de configuración en C#? Responder citando

Estoy desarrollando una aplicación con Visual C# .Net de Visual Studio .Net 2010, estoy aprendiendo a programar en este lenguaje (vengo de Delphi). He visto que tiene un "namespace" para guardar y leer la configuración de la aplicación en un xml ¿cómo se hace esto? me refiero a guardar opciones de configuración personalizadas para el usuario de la aplicación que estoy programando: tamaños de ventana, anchos de columnas, colores, valores por defecto, etc.

Estoy usando Microsoft Visual C Sharp C# de Visual Studio .Net 2010 en un equipo con Microsoft Windows 7 Ultimate x64.
MensajePublicado:
Dom Jul 08, 2012 3:35 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: ¿Cómo leer y escribir parámetros de configuración en C#? Responder citando



Anuncios



varios escribió:
Estoy desarrollando una aplicación con Visual C# .Net de Visual Studio .Net 2010, estoy aprendiendo a programar en este lenguaje (vengo de Delphi). He visto que tiene un "namespace" para guardar y leer la configuración de la aplicación en un xml ¿cómo se hace esto? me refiero a guardar opciones de configuración personalizadas para el usuario de la aplicación que estoy programando: tamaños de ventana, anchos de columnas, colores, valores por defecto, etc.

Estoy usando Microsoft Visual C Sharp C# de Visual Studio .Net 2010 en un equipo con Microsoft Windows 7 Ultimate x64.


Puedes hacerlo con XML directamente pero lo ideal es que uses un el namespace de Microsoft .Net Framework para tal efecto System.Configuration.

A continuación mostramos el código de una clase completa con dos procedimientos para leer y escribir valores en el fichero de configuración de la aplicación nombre_proyecto.EXE.config:

Código:

using System;
using System.Configuration;
using System.Windows.Forms;


namespace AjpdSoftIndexarTextoFicherosPDF
{
    class Utilidades
    {
        public string leerValorConfiguracion (string clave)
        {
            try
            {
                string resultado =
                    ConfigurationManager.AppSettings[clave].ToString();
                return resultado;
            }
            catch
            {
                return "";
            }
        }


        public void guardarValorConfiguracion(string clave, string valor)
        {
            try
            {
                //La línea siguiente no funcionará bien en tiempo de diseño
                //pues VC# usa el fichero xxx.vshost.config en la depuración
                //Configuration config =
                //    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //sí pues la cambiamos por:
                Configuration ficheroConfXML =
                    ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

                //eliminamos la clave actual (si existe), si no la eliminamos
                //los valores se irán acumulando separados por coma
                ficheroConfXML.AppSettings.Settings.Remove(clave);

                //asignamos el valor en la clave indicada
                ficheroConfXML.AppSettings.Settings.Add(clave, valor);

                //guardamos los cambios definitivamente en el fichero de configuración
                ficheroConfXML.Save(ConfigurationSaveMode.Modified);
            }
            catch
            {
               /* MessageBox.Show("Error al guardar valor de configuración: " +
                    System.Environment.NewLine + System.Environment.NewLine +
                    ex.GetType().ToString() + System.Environment.NewLine +
                    ex.Message, "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);*/
            }
        }
    }
}


Un ejemplo de uso de esta clase en nuestra aplicación:

Para guardar los valores de configuración de nuestra aplicación cuando el usuario cierra el formulario principal:

Código:

        private void formIndexarPDF_FormClosed(object sender, FormClosedEventArgs e)
        {
            Utilidades proUtilidades = new Utilidades();
            cifrarAES cifradoAES = new cifrarAES();

            proUtilidades.guardarValorConfiguracion("BD.ODBC", lsODBC.Text);   
            proUtilidades.guardarValorConfiguracion("BD.Motor", lsMotor.Text);
            proUtilidades.guardarValorConfiguracion("BD.Servidor", txtServidor.Text);
            proUtilidades.guardarValorConfiguracion("BD.Usuario", txtUsuario.Text);
            proUtilidades.guardarValorConfiguracion("BD.Contraseña",
                cifradoAES.cifrarTextoAES (txtContrasena.Text,
                "AjpdSoft_Frase_Encriptado", "AjpdSoft_Frase_Encriptado",
                "MD5", 22, "1234567891234567", 128));
            proUtilidades.guardarValorConfiguracion("BD.Base_Datos", txtBD.Text);
            proUtilidades.guardarValorConfiguracion("BD.Puerto", txtPuerto.Text);
            proUtilidades.guardarValorConfiguracion("BD.Tabla", txtTabla.Text);
            proUtilidades.guardarValorConfiguracion("BD.Campo_Texto_Indexado",
                txtCampoTextoPDF.Text);
            proUtilidades.guardarValorConfiguracion("BD.Campo_Fecha",
                txtCampoFecha.Text);   
            proUtilidades.guardarValorConfiguracion("BD.Campo_Metadatos",
                txtCampoMetadatosPDF.Text);
            proUtilidades.guardarValorConfiguracion("BD.Campo_Fichero_PDF",
                txtCampoFicheroPDF.Text);
        }


Y al cargar el formulario principal, leemos los valores de configuración del fichero .config y los introducimos en cada componente (o tratamos cada parámetro como deseemos):

Código:

        private void formIndexarPDF_Load(object sender, EventArgs e)
        {                   
            Utilidades proUtilidades = new Utilidades();
            cifrarAES cifradoAES = new cifrarAES();

            lsODBC.Text =
                proUtilidades.leerValorConfiguracion("BD.ODBC");
            lsMotor.Text =
                proUtilidades.leerValorConfiguracion("BD.Motor");
            txtServidor.Text =
                proUtilidades.leerValorConfiguracion("BD.Servidor");
            txtUsuario.Text =
                proUtilidades.leerValorConfiguracion("BD.Usuario");
            txtContrasena.Text =
                cifradoAES.descifrarTextoAES(
                  proUtilidades.leerValorConfiguracion("BD.Contraseña"),
                  "AjpdSoft_Frase_Encriptado", "AjpdSoft_Frase_Encriptado",
                  "MD5", 22, "1234567891234567", 128);
            txtBD.Text =
                proUtilidades.leerValorConfiguracion("BD.Base_Datos");
            txtPuerto.Text =
                proUtilidades.leerValorConfiguracion("BD.Puerto");
            txtTabla.Text=
                proUtilidades.leerValorConfiguracion("BD.Tabla");
            txtCampoTextoPDF.Text =
                proUtilidades.leerValorConfiguracion("BD.Campo_Texto_Indexado");           
            txtCampoFecha.Text =
                proUtilidades.leerValorConfiguracion("BD.Campo_Fecha");
            txtCampoMetadatosPDF.Text =
                proUtilidades.leerValorConfiguracion("BD.Campo_Metadatos");
            txtCampoFicheroPDF.Text =
                proUtilidades.leerValorConfiguracion("BD.Campo_Fichero_PDF");
        }


Importante: además de la cláusula using System.Configuration, hay que agregar una referencia a Sytem.Configuration.dll desde el menú "Proyecto" - "Agregar referencia", en la pestaña ".NET" hay que buscar "System.Configuration" y agregar esta referencia.
MensajePublicado:
Jue Jul 12, 2012 8:14 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: ¿Cómo leer y escribir parámetros de configuración en C#? Responder citando



Anuncios



alonsojpd escribió:
Puedes hacerlo con XML directamente pero lo ideal es que uses un el namespace de Microsoft .Net Framework para tal efecto System.Configuration.

A continuación mostramos el código de una clase completa con dos procedimientos para...
Importante: además de la cláusula using System.Configuration, hay que agregar una referencia a Sytem.Configuration.dll desde el menú "Proyecto" - "Agregar referencia", en la pestaña ".NET" hay que buscar "System.Configuration" y agregar esta referencia.


Ok, todo me funciona de maravilla, pero quiero guardar una contraseña como veo en el ejemplo que has puesto, sólo que la clase "cifrarAES" no la has puesto ¿puedes ponerla? así tendría todo lo que necesito.
MensajePublicado:
Jue Jul 12, 2012 8:20 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: ¿Cómo leer y escribir parámetros de configuración en C#? Responder citando



Anuncios



varios escribió:
Ok, todo me funciona de maravilla, pero quiero guardar una contraseña como veo en el ejemplo que has puesto, sólo que la clase "cifrarAES" no la has puesto ¿puedes ponerla? así tendría todo lo que necesito.


El código fuente en Visual C# de esta clase para encriptar y desencriptar en AES lo tienes en:

http://www.ajpdsoft.com/modules.php?name=Content&pa=showpage&pid=254
MensajePublicado:
Jue Jul 12, 2012 8:23 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: ¿Cómo leer y escribir parámetros de configuración en C#? Responder citando



Anuncios



He formateado el equipo y he instalado Visual Studio .NET 2013 y ConfigurationManager me da el error de que no existe en el contexto actual ¿falta algo? he puesto el Using System.Configutation.
MensajePublicado:
Dom Abr 20, 2014 5:52 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: ¿Cómo leer y escribir parámetros de configuración en C#? Responder citando



Anuncios



varios escribió:
He formateado el equipo y he instalado Visual Studio .NET 2013 y ConfigurationManager me da el error de que no existe en el contexto actual ¿falta algo? he puesto el Using System.Configutation.


Efectivamente, en las indicaciones anteriores falta indicar que hay que añadir una referencia a System.Configuration, desde el menú "PROYECTO" - "Agregar referencia" y en "Ensamblados" - "Framework" marcaremos "System.Configuration".
MensajePublicado:
Dom Abr 20, 2014 5:55 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » VB.Net, C# .Net, Visual Studio .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A