Modificando los Settings de una aplicación Windows desde el código

En ocasiones es necesario ajustar la configuración de una app. por ejemplo, configurar cuál va a ser el directorio de trabajo, o qué colores quiere el usuario para la interfaz, etc.

Las aplicaciones .net tienen un archivo llamado app.config (o web.config en el caso de las aplicaciones web), que puede contener estas configuraciones.

Por lo general esas configuraciones se hacen a mano en el caso de las aplicaciones web. Pero en ocasiones es necesario que estas configuraciones se modifiquen desde el mismo código.

System.Configuration contiene todas las herramientas para lograrlo, pero es una API que tiene muchísimas funcionalidades para manejar la configuración de las aplicaciones. Por eso puede resultar fácil perderse tratando solo de hacer unas sencillas manipulaciones en el archivo de settings.

Aquí muestro de una forma sencilla cómo buscar un valor de llave de configuración de una aplicación Windows. Si no existe, cómo agregarlo y luego cómo modificarlo.

     //Objeto de configuración
    var config=ConfigurationManager
           .OpenExeConfiguration(ConfigurationUserLevel.None);
    //Búsqueda de un setting en particular
    var pathSettings = config.AppSettings.Settings["MusicPath"];
    //Si está en nulo, es porque no se encuentra.
    //Entonces lo agregamos
    if (pathSettings == null)
        config.AppSettings.Settings
        .Add("MusicPath",ci.MusicPath);
    //Si no, ya está agregado, entonces lo modificamos
    else pathSettings.Value = newValue;
    //Grabamos la configuración en disco de nuevo.
    config.Save();

Es necesario operar de esta manera, dado que intentar por ejemplo config.AppSettings.Settings["MusicPath"]=newValue; no es legal de acuerdo a la accesibilidad que se le ha dado a este indexador.