¿Cuándo usar el registro de Windows en vez de ficheros?

A la hora de crear una aplicación, a menudo nos vamos a encontrar que necesitamos reutilizar datos de una sesión anterior, una característica que dentro del mundo de la informática se conoce como persistencia. Lo más habitual es trabajar con ficheros, ya que al fin y al cabo el disco duro nos ofrece exactamente eso, la capacidad de almacenar datos que sobrevivan no sólo al ciclo de vida de la aplicación sino al apagado del ordenador.

Debemos tener en cuenta, sin embargo, que Windows nos ofrece una base de datos integrada en el sistema que también nos permite almacenar información pero con algunas ventajas:

  • Cada usuario tiene su propio registro. Esto implica que si queremos almacenar datos por usuario, no tenemos que crear nosotros mismos un sistema de usuarios, de permisos ni de absolutamente nada.
  • Ofrece una interfaz de clave/registro que no necesita ser parseada. Podemos almacenar datos arbitrarios en el registro sin tener que andar insertando separadores.
  • El sistema operativo nos ofrece una interfaz gráfica de gestión. Utilizando regedit podemos crear claves, modificarlas y borrarlas.
  • El registro es gestionado por el kernel. Si tu aplicación se cuelga o tiene cualquier problema, los cambios que hayas hecho en el registro seguirán estando ahí. Si el sistema entero se cuelga, es responsabilidad de Windows asegurarse de que el registro es válido.
  • El registro es seguro para hilos. Varios hilos o procesos pueden estar accediendo a la misma clave y podremos asegurar que las modificaciones son atómicas.

Por supuesto, el registro presenta también desventajas:

  • No vale para una gran cantidad de datos. El registro no está diseñado para guardar ese nivel de dos gigas que has creado, sino para almacenar unos pocos parámetros de configuración.
  • Dificultad de manejo. Al ser un enorme bloque de bytes, es difícil de gestionar y de crear backups.
  • Escasa portabilidad. Si me quiero llevar mi aplicación a otro escritorio, no me queda otro remedio que andar exportando claves, frente a la opción de tener un fichero de configuración que pertenezca a los ficheros de la propia aplicación.

Si utilizamos C#, la clase Registry (que podemos encontrar en el namespace Microsoft.Win32) nos facilita operaciones para trabajar con él.

Sacado de éste enlace.

¿Cuándo usar el registro de Windows en vez de ficheros?

Leave a comment