¿Por qué es necesario el registro de Windows?

56

Como he depurado problemas en com, lado a lado, he lidiado con dll hell, mientras odiaba el registro de Windows con pasión, me preguntaba por qué es necesario.

Nunca me sentí obligado a leer un libro completo sobre las mejores prácticas de registro, y luego simplemente "obtenerlo".

Sin embargo, he usado Linux y Mac OS y veo las formas en que se pueden instalar varias versiones de Python y sus bibliotecas en la misma computadora * nix.

Debido a que el registro tiene un formato libre (aunque feo) y se usa para todo tipo de propósitos, nunca he entendido qué problema esencial está tratando de resolver.

Por ejemplo, Microsoft no quiere que tenga dos versiones diferentes de MS Office instaladas una al lado de la otra. Utilizan el registro para hacer cumplir esto durante la instalación. Esta limitación es artificial, en mi opinión. Si realmente les importara permitir un comportamiento diferente, podrían haber ajustado su arquitectura en consecuencia.

En Mac OS, puedes instalar y eliminar aplicaciones con solo colocarlas en una carpeta en particular.

Entonces,

A) ¿Qué problema esencial está tratando de resolver? B) ¿Cómo lo solucionan otros sistemas operativos?

    
pregunta Job 18.02.2011 - 17:37

13 respuestas

42

La mayoría de las otras respuestas son más o menos correctas, pero (junto con la pregunta) no entienden el punto.

El registro es un administrador de bases de datos jerárquicas, nada más y nada menos.

Las "fallas" que atribuye al registro son realmente independientes del propio registro. Simplemente son decisiones que varios proveedores han tomado sobre cosas como la forma de instalar sus programas: si almacena la información de alguna otra manera / forma / contenedor, podrían seguir los mismos problemas.

Dada la filosofía de "todo es un archivo" de Unix, no es sorprendente que los sistemas Unix (y similares, como Linux y MacOS) almacenen la información como archivos individuales en el sistema de archivos. Sin embargo, esto no es tan diferente como mucha gente podría creer de inmediato, ya que el sistema de archivos Unix es en sí mismo una base de datos jerárquica (o, posiblemente, una base de datos de red si se tienen en cuenta los enlaces simbólicos). La diferencia evidente es que se accede al registro a través de una API independiente, donde el almacenamiento de datos de configuración en archivos permite acceder a esos archivos, editarlos, etc., a través de la misma API (y herramientas) que cualquier otro archivo.

    
respondido por el Jerry Coffin 18.02.2011 - 18:42
25

Es un Repositorio de configuraciones - una ubicación centralizada y algo estandarizada para las preferencias, configuraciones, perfiles ligeros .

Se vuelve más fácil de entender cuando se mira el panorama general de todas las cosas que un sistema operativo tiene que almacenar para sus usuarios y aplicaciones:

Windows

  • Repositorio de configuraciones
    • Sistema: Registro de Windows HKEY_LOCAL_MACHINE y específicamente gran parte de él está en \SOFTWARE\Microsoft
    • Sistema de terceros: Registro de Windows HKEY_LOCAL_MACHINE
    • Sistema centrado en el usuario: Registro de Windows HKEY_USERS , [user]\SOFTWARE\Microsoft
    • Centrado en el usuario de terceros: Registro de Windows HKEY_USERS\[user]\SOFTWARE
  • Archivos de aplicación que un usuario no debería ver C:\Users\[User]\AppData en carpetas ocultas
  • Archivos de aplicación que un usuario puede desear C:\Users\[User]\ en carpetas no ocultas creadas por la aplicación

Mac OS X

  • Repositorio de configuraciones
    • Sistema y terceros: /Library/Preferences en com.apple...plist archivos
    • Sistema de terceros: /Library/Preferences en archivos plist de terceros
    • Sistema centrado en el usuario: /Users/[user]/Library/Preferences , igual que arriba
    • Centrado en el usuario de terceros: /Users/[user]/Library/Preferences , igual que arriba
  • Archivos de aplicación de todo el sistema que un usuario no debería ver /Library/Application Support
  • Archivos de aplicación que un usuario no debería ver /Users/[user]/Library/Application Support
  • Archivos de aplicación que un usuario puede desear /Users/[user]/ en carpetas no ocultas

Esencialmente, el registro es idéntico a las carpetas de Mac OS X /Library/Preferences , y no mucho más o menos.

El hecho de que Mac OS tenga una coincidencia casi uno a uno para los grupos organizativos de datos del sistema y de la aplicación ilustra que el Registro de Windows es un sistema completamente justificado que es solo una forma diferente de hacer las cosas

La naturaleza del sistema que no es un sistema de archivos hace que sea más difícil realizar copias de seguridad, restaurar o migrar partes de él mientras se dejan otras, así que prefiero el sistema Mac, pero el propósito es casi idéntico.

Ambos sistemas operativos tienen aplicaciones que eligen violar estas estructuras en diferentes grados, generalmente a través del usurpado de un contexto más global para crear archivos o carpetas que realmente no pertenecen allí. Algunas aplicaciones realmente crean carpetas directamente en C:\ o / sin preguntar. Eso realmente me vuelve loca!

Por cierto, aunque la naturaleza de arrastrar y soltar de (la mayoría) de las aplicaciones de Mac OS es brillante, tiene un problema similar con diferentes versiones una al lado de la otra, aunque probablemente no se dé cuenta. ya que sus configuraciones no se almacenan en el archivo .app , pero en Application Support o Preferences , todas las versiones de la aplicación seguirán usando las mismas configuraciones y se afectarán entre sí, a menos que la versión más reciente decida explícitamente usar una carpeta por un nombre diferente ( IntelliJIDEA70 , IntelliJIDEA81 , etc.)

    
respondido por el Nicole 18.02.2011 - 19:28
20
  

Nunca he entendido qué problema esencial está tratando de resolver.

Antes del Registro, Windows usaba archivos .INI. En la publicación del blog ¿Por qué los archivos INI están en desuso en favor del registro? Raymond Chen enumera los problemas que existían con los archivos .INI que intentaban resolverse. También enumera los problemas que los archivos de configuración XML comparten con los archivos .ini anteriores. Esto es probablemente lo que vale la pena ver, ya que eso es lo que muchas aplicaciones utilizan hoy en día.

  

... el péndulo ha vuelto al texto   archivos de configuración, pero esta vez,   son XML Esto reabre muchos de los   problemas que tenían los archivos INI, pero   tener la mayor ventaja que nadie   escribe en archivos de configuración XML;   Sólo leen de ellos. XML   Los archivos de configuración no se utilizan para   almacenar configuraciones de usuario; solo contienen   Información sobre el programa en sí.   Veamos esos problemas de nuevo.

     
  • La seguridad del archivo XML no es lo suficientemente granular. Pero ya que el XML   el archivo de configuración es de sólo lectura, el   La objeción primaria es eludida. (Pero   si quieres solo administradores   Tener permiso para leer partes específicas.   del XML, entonces estás en problemas.)
  •   
  • Como los archivos de configuración XML son de solo lectura, no tiene que preocuparse   sobre múltiples escritores.
  •   
  • Los archivos de configuración XML pueden sufrir una denegación de servicio. Todavia puedes   Ábralos exclusivamente y bloquéelos.   otros procesos.
  •   
  • Los archivos XML solo contienen cadenas. Si desea almacenar datos binarios,   Tengo que codificarlo de alguna manera.
  •   
  • El análisis de un archivo XML es comparativamente lento. Pero ya que son   solo lectura, puede guardar de forma segura la   resultado analizado, por lo que sólo necesita   analizar una vez.
  •   
  • Los programas analizan los archivos XML manualmente, pero el formato XML ya está bloqueado,   por lo que no se podría extender de todos modos, incluso   Si quieres. Con suerte, esos   Los programas usan un XML conforme a los estándares   analizador en lugar de rodar su propio,   pero no me sorprendería si la gente   escribió su propio analizador XML personalizado que   se ahoga, digamos, procesando   Instrucciones o cadenas de más de 70   personajes.
  •   
  • Los archivos XML no tienen un límite de tamaño.
  •   
  • Los archivos XML no tienen una ubicación predeterminada.
  •   

Todo esto supone que las aplicaciones nunca escriben en sus archivos de configuración con los que no estoy de acuerdo, pero que empeorarían las cosas y no mejorarían.

    
respondido por el Conrad Frix 18.02.2011 - 18:36
11

Mi teoría es que la fuerza motriz no es ninguna de las anteriores. Más bien, fue una medida antipiratería. En los días de registro previo, en general, simplemente puede copiar un programa completo de una máquina a otra. Encuentra los .DLLs y estabas listo. El registro hace que este MUCHO sea más difícil de hacer.

Hay muy poco que logre el registro que creo que no se serviría mejor con un solo archivo de configuración por propósito.

(2014) Para ampliar mi razonamiento aquí un poco: veo el registro como un objeto divino. Todos sabemos que es un antipattern.

    
respondido por el Loren Pechtel 18.02.2011 - 22:22
6

Mi comprensión básica es que el registro fue diseñado para ser una especie de repositorio de configuraciones, que reemplaza los archivos .ini que solían usarse.

(NB, una comprensión burda, por lo que esto podría ser incorrecto).

    
respondido por el Megan Walker 18.02.2011 - 17:48
5

A) Estoy de acuerdo con la respuesta de Tim.

B) Otros sistemas operativos utilizan otros métodos para almacenar la configuración del programa, por ejemplo, los archivos de Unix generalmente se colocan en / etc (archivos globales) y en la carpeta del usuario en varias carpetas ocultas (configuración del usuario). Así que todos usan alguna forma de registro, excepto que en algunos casos se distribuye.

    
respondido por el Coyote21 18.02.2011 - 18:09
3

Como yo lo entiendo (no necesariamente disfrutando)

A) Para proporcionar una "ubicación centralizada" donde cualquier programa pueda almacenar información sobre su instalación o configuración. Esta información puede ser utilizada por los programas de cualquier forma que decidan. Personalización, antipiratería, etc.

Toda esta información que se encuentra en esta estructura la protege, piense en la idea de que los animales se congregan, más seguridad en los números. Si cada bit de información fuera su propio archivo ini, algún usuario podría eliminarlo por capricho. Aún pueden hacerlo ingresando al registro, pero muchos lo ven como una especie de caja negra y no lo tocan por temor a romper su sistema.

B) Mac OS usa archivos individuales como las ventanas de archivos ini usadas antes de que apareciera el registro.

    
respondido por el Tim 18.02.2011 - 17:52
3

El propósito obvio del Registro es actuar como un repositorio único para todos los datos de configuración y configuración y eliminar la dependencia de los archivos de configuración.

En otros sistemas operativos, modus operandi es almacenar información específica de la aplicación (como archivos de configuración) en directorios ocultos específicos de la aplicación en el directorio de inicio de los usuarios. (Por ejemplo, el juego Aquaria almacena la información de configuración en $HOME/.Aquaria .) Los archivos de configuración global se almacenan en /etc/ .

Las Mac hacen lo suyo: los archivos plist específicos de la aplicación se almacenan (creo) en el directorio Library del usuario o del sistema.

    
respondido por el greyfade 18.02.2011 - 18:10
3

El problema no es con la filosofía del registro sino con su diseño. El sistema operativo utiliza el registro para buscar información importante sobre el programa que se está cargando. Aunque en lugar de cargar la información cuando sea necesario, la carga toda al momento del arranque, lo que "puede" afectar el rendimiento del sistema. El sistema también es objeto de abusos, ya que los proveedores lo cargan con mucha información y muchas veces no eliminan la información cuando se desinstala el software.

A diferencia de Unix, donde todo se almacena en archivos y se carga cuando es necesario. El sistema operativo de esta manera no se basa en las habilidades de programación del proveedor para afectar su rendimiento ...

    
respondido por el Gaurav Sehgal 19.02.2011 - 02:21
2

Aunque no puedo comentar sobre otros sistemas operativos, el registro también ayuda a mantener la configuración de una aplicación durante un proceso de actualización o desinstalación / reinstalación. Si toda la configuración estaba en un archivo .ini que debía reemplazarse debido a una actualización que agregó características, es posible que tenga dificultades o que tenga que crear un proceso personalizado para combinar los datos de configuración en el archivo ini entrante.

Sin embargo, con los datos en el registro, puede usar un paquete de instalación común (WIX, InstallShield, etc.) que manejará la desinstalación / reinstalación de archivos sin tocar la configuración de la aplicación.

    
respondido por el Dillie-O 18.02.2011 - 18:21
1

(todos A. No estoy seguro acerca de B)

Creo que esto es realmente hasta el punto (histórico) de que el registro actúa como una especie de interfaz común para la configuración de la aplicación.

¿Tienes una aplicación? ¿Desea almacenar una configuración de usuario? Péguelo en el registro.

No es necesario "garantizar los perfiles de usuario", no es necesario acceder directamente al sistema de archivos. Win32 se ocupa de todo eso.

    
respondido por el James Love 18.02.2011 - 17:58
1

Era una forma de crear algo nuevo, desconocido y tabú para la mayoría de los usuarios, para que lo dejaran en paz. Los archivos .ini y autoexec.bat se pueden eliminar o cambiar fácilmente para peor.

Cambiando la configuración de registro, oh my!

    
respondido por el JeffO 19.02.2011 - 03:02
1

Además de simplemente almacenar la configuración de la aplicación, el registro es el medio por el cual los programas y componentes localizan otros programas y componentes . En última instancia, creo que esta es la razón por la que se centraliza en una única base de datos en lugar de expandirse en miles de archivos de texto o xml.

Por ejemplo, un componente que realiza, por ejemplo, los efectos de video se "registra" en el registro, lo que permite a las aplicaciones relacionadas con el video otras saber de su existencia y usarlas. Al tener un sistema centralizado para esto, evita lo que sería un desastre grave, ya que miles de sistemas y aplicaciones utilizan diferentes métodos para alcanzar ese nivel de integración.

    
respondido por el GrandmasterB 19.02.2011 - 09:09

Lea otras preguntas en las etiquetas