[Infraestructura] - Archivo INI (Windows Initialization file)

Descripción general:

Un archivo INI (Windows Initialization file)de acuerdo con la información existente en Wikipedia es un simple archivo de texto en el cual es posible guardar configuraciones para que una aplicación pueda usarla. Debido a su simplicidad fueron adoptados por muchos desarrolladores de aplicaciones, sin embargo al tratarse de archivos en texto plano cualquiera puede alterarlos dejando fuera de servicio a las aplicaciones que los usan.


↑↑↑

Enlace de descarga

Fichero que contiene código VB.Net para trabajar con archivos INI

En este documento hay un pequeño FAQ sobre MD5


↑↑↑

Código Md5 para los paranoicos


' 
'
' -----------------------------------------------
' HerramientaHash (2022) 
' Cálculo de la huella digital de un fichero
' URL para descarga de la herramienta:
' [http://joaquin.medina.name/web2008/documentos/informatica/herramientas/Md5/SetupWpfHash2012.zip]
'
' Fecha del calculo: 
' Fecha UTC.................: [2023-09-26T22:02:52Z]
' Fecha local...............: [miércoles, 27 de septiembre de 2023 0:02]
'
' Nombre fichero............: [IniFile.zip]
' Tamaño en bytes...........: [22246]
' Algoritmo criptográfico...: [Sha256Hash]
' Huella digital (Hex)......: [EABA79D44B6DAFEE787B64EA8EE02DC81522E2D3113D56FB8116FDBC201653CA]
' Control Paranoico.........: [1010011000]
' /Eof informe 
' -----------------------------------------------
'


↑↑↑

¿Qué hago si obtengo un valor diferente?

Si se te da el caso de que el checksum del fichero no coincide con el que obtengas, puede ser por varias razones, la más probable es que por algún despiste haya puesto mal el valor Hash. Otra posibilidad, mucho más peligrosa, es que alguien haya cambiado el contenido del fichero y estés descargando cualquier cosa innombrable

En cualquier caso,
  • No debes usar bajo ningún concepto el fichero que te has descargado
  • Por favor avísame indicando el nombre del fichero, el checksum que has obtenido y la página en la que estaba el link. De esa forma podre comprobar el estado del del fichero y arreglarlo si es necesario.

↑↑↑

A modo de información diversa

Esto ha hecho que el uso de archivos INI hallan caído en desuso, sin embargo eso no quiere decir que no podamos usarlos hoy en día y con las debidas precauciones explotarlos. Hay que usar las funciones GetPrivateProfileStringKey y  WritePrivateProfileString, (y alguna mas), estas funciones forman parte del sistema operativo Windows, por lo que no es necesario llevar los archivos donde se encuentran integradas. Podemos declarar esas funciones en un archivo aparte (que debe formar parte de nuestro proyecto) y para ello declararemos las funciones como "Públicas" (de lo contrario no las podremos usar en el resto del programa) o "Privadas" si solo las vamos a usar en un módulo en especial.

Los archivos INI están compuestos de secciones que se escriben al inicio con los caracteres "[" y "]", por ejemplo "[Preferencias]", luego cada sección contiene una pareja [Clave=Valor] Las Claves son el equivalente a las variables dentro de un programa, y el [Valor] o información asignada a esa clave. El proceso se repite según cuantas secciones necesitemos en nuestro programa e igualmente para las llaves que necesitemos dentro de cada sección.

Ejemplo


El siguiente ejemplo es un archivo .ini ficticio que establece 
las preferencias de un navegador: y esta copiado de la Wikipedia

[Red]
; Poner UsarProxy=1 si no hay cortafuegos
UsarProxy=1
Proxy=192.168.0.1

[Preferencias]
PaginaInicio=https://wikipedia.org
Maximizar=1

Este archivo contiene dos secciones. La sección Red describe los parámetros para que el navegador pueda conectarse a páginas Web. El parámetro UsarProxy tiene el valor 1, que significa que es necesario utilizar un servidor proxy. El parámetro Proxy establece la dirección IP de tal servidor. La sección Preferencias describe parámetros del usuario. El parámetro PaginaInicio establece la URL que debe abrir el navegador inmediatamente después de arrancar. El parámetro Maximizar con el valor 1 indica que el navegador debe iniciarse a pantalla completa.

El funcionamiento de un archivo INI es realmente simple, como mencionamos anteriormente estos pueden ser creados/modificados con un simple editor de texto o bien desde programas.


↑↑↑

Conclusiones:

Los archivos .ini están prácticamente en desuso hoy día. Existen varios motivos:

  • Es un formato que solamente se usa en Windows y no es totalmente portable a otros sistemas operativos (léase, UNIX) debido básicamente a que los caracteres de salto de línea no se interpretan igual en todos los sistemas operativos.
  • El Registro de Windows hace innecesario su uso y es menos propenso a errores de manipulación.
  • El formato XML puede cumplir la misma función y es un estándar portable. Además no tiene problemas respecto al juego de caracteres empleado, siempre y cuando se especifique la codificación de caracteres UTF-8 (por defecto de XML) de manera explícita en el prólogo o que la aplicación de edición de texto permita guardar en formato UTF-8.5?
  • Hasta la fecha, la empresa Microsoft mantiene una librería en lenguaje C++ que permite leer y escribir dichos archivos .INI (GetPrivateProfileString y WritePrivateProfileString)4? pero indican que es por compatibilidad con las aplicaciones de 16 bits y desaconsejan su uso.

↑↑↑

Se recomienda:

  • Reemplazar el uso de archivos .ini por el uso de "Configuration Files" es el archivo es el app.config que veras en tu solución. Son muchas veces mejor que el .ini ya que el formato xml le otorgan una formas avanzada de poder definir la configuración.
  • También puedes investigar sobre la clase ConfigurationManger