En Windows, use %APPDATA%\appname
. En * NIX, use ~/.appname
. No use nombres de directorio fijos en ninguna de las plataformas, ya que el directorio de inicio del usuario puede ser diferente del predeterminado (podría estar en la red, por ejemplo).
En cuanto al formato, use lo que considere mejor. Esa es una decisión que solo usted puede tomar en el contexto de su solicitud. Es innecesario, y de hecho, desaconsejable, tener una forma "estándar" de hacerlo, si esa forma "estándar" no es lo mejor para su programa en particular.
Por ejemplo, XML / JSON podría ser una buena forma de almacenar datos / configuración del usuario si su aplicación ya usa XML / JSON para otra cosa. Pero si se trata de un archivo de configuración simple, ¿por qué agregar hinchazón a su aplicación introduciendo una dependencia? En ese caso, probablemente sea mejor usar un archivo de texto simple con var: value\n
líneas.
EDITAR: No hay una "mejor" forma portátil, ya que los sistemas operativos utilizan convenciones muy diferentes para esto. No rompas los estándares del sistema operativo sin una buena razón.
EDIT2: si te encuentras haciendo una configuración de todo el sistema en /etc
o HKEY_LOCAL_MACHINE
, pregúntate si la configuración es realmente global. Luego espere 5 minutos y pregúntese nuevamente. Si la respuesta sigue siendo sí, entonces, por supuesto, haga una configuración global. Recuerde, un usuario normal no tiene acceso de escritura /etc
o, HKEY_LOCAL_MACHINE
y al hacer esto, se asegura de que alguien sin derechos de administrador no pueda instalar su aplicación.