esto es más una cuestión de arquitectura del sistema operativo que la programación directa, pero aún así. ¿Por qué se creó el registro de Windows como un subsistema completamente separado para almacenar la configuración del sistema/aplicación? En los sistemas operativos * nix hay un directorio/etc que es perfectamente comprensible, ya que el sistema de archivos es una forma jerárquica natural para almacenar configuraciones, mientras que Microsoft decidió crear un subsistema jerárquico completamente externo, lo que parece ser una inversión tonta, ¿por qué no solo usan una jerarquía de sistema de archivos?¿Por qué existe el registro de Windows?
Respuesta
- centralizada - que es útil para viajar perfiles.
- Transactional - que hace que sea más difícil destruir tu configuración de .
- Seguridad - Puede aplicar lectura/escritura con una granularidad mejor que un archivo (por clave/valor).
Buen resumen al punto. –
¿Qué es transaccional sobre el registro? ¿Quiere decir que las actualizaciones de valores individuales son atómicas? ¿O te refieres al Registro Transaccional de Vista (que obviamente es un desarrollo muy reciente)? Además, por supuesto, uno puede tener ACL por clave/valor con archivos si cada valor es un archivo separado (recuerdo que había algo parecido a un registro de Linux de IBM que realmente lo hizo de esa manera ...). –
Se realizan transacciones con actualizaciones individuales; este ha sido el caso desde NT 3.1. A diferencia de los archivos planos donde las actualizaciones requieren una secuencia de lectura/alteración/escritura que potencialmente puede dañar el archivo. –
Este artículo analiza los archivos INI vs registro: http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx
Gracias, muy buen artículo. Y ahí está realmente probado por qué el registro es mucho mejor que los archivos ini. Sin embargo, el concepto/etc concept + user-specific settings en los directorios de inicio en * nix es un concepto mucho más amplio que los archivos ini antiguos. – justadreamer
Para empezar, es más rápido de leer y escribir en el registro durante el transcurso de una sesión de usuario.
La idea es tener todas las configuraciones para todos los programas almacenadas en un solo lugar en lugar de tenerlas repartidas por todo el disco.
Probablemente cierto para su diseño inicial, solo que Microsoft no lo pensó cuando diseñaron Archivos de programa, Archivos de programa comunes, Directorio de inicio de usuario, Datos de aplicación de usuario, Datos de aplicación local de usuario y Datos de aplicación de todos los usuarios. Ninguna crítica, solo una de mis viejas quejas. – peterchen
@peterchen - no, no. Tienes un punto. aunque, lo admito, tal vez fue como inicialmente se pensó, luego en el curso de las necesidades de la historia obligó a tomar otras cosas en consideración ... pero, como dije en un comentario a @yogman, ¿por qué no utilizar el principio de configuración unix? archivos de diferentes prioridades? – Rook
De hecho, las mejores prácticas de Windows recomiendan encarecidamente que no se guarden las configuraciones en el registro; se supone que se deben usar archivos de configuración (preferiblemente legibles para humanos) para eso. Deje el registro para la configuración del sistema operativo, asociaciones de archivos y componentes COM. –
- Cada aplicación no tiene que reinventar un formato de archivo de configuración
- Usted puede utilizar fácilmente el registro de código en modo kernel
Como se menciona en el artículo Antiguo cosa nueva citado por Bastien:
- El sistema puede manejar los problemas de concurrencia para usted
- se pueden ingresar las claves de registro ACL
También mencionaría que muchos * nix frameworks han reinventado el registro ... Al igual que gconfd en GNOME.
gconfd es solo una interfaz gráfica de usuario para archivos de configuración de texto sin formato que viven en su directorio de inicio. Buen intento sin embargo. – Vitali
regedit es solo una interfaz gráfica de usuario para los archivos de configuración codificados que viven en el directorio del sistema. Buen intento sin embargo. – snicker
@Vitali - Uh. gconf es un conjunto de pares de valores clave clave para los datos de configuración. Al igual que el registro. – asveikau
Además, la granularidad del sistema de archivos: un clúster para cada valor es un poco alto, por lo que debe realizar una compensación donde el sistema de archivos finaliza y se inicia el archivo de configuración. Eso, por supuesto, no te da una API consistente. Entonces, ¿por qué no extraer todas las configuraciones en algunos archivos clave y darle una API consistente para acceder a ella? BAM - registro.
(Y como MS general considera API formato más importantthan, no es de extrañar que los archivos son opacos)
[Raymond Chen voz] recuerdo, fue diseñado para equipos en los 4 MB de memoria RAM fue mucho. [/ Raymond Chen voz]
No obtendrá un clúster por valor en ningún sistema de archivos moderno que sepa cómo embalar pequeños flujos de archivos directamente en la asignación mesa. NTFS hace eso; ver http://en.wikipedia.org/wiki/Ntfs#Resident_vs._non-resident_data_streams –
Buen punto, Pavel. (La edad de la prueba guarda mi respuesta - ¡uf!;)) – peterchen
Lo hicieron, creo, para admitir una configuración independiente para cada usuario de inicio de sesión. En Unix, hay un concepto de directorio de inicio, mientras que ninguno en Windows.
No es completamente cierto ... ¿por qué no usar un esquema, por ejemplo, como vim does ... vimfiles del directorio de mayor rango se carga (admin especificado), ellos vimfiles del directorio de clasificación inferior se cargan (especificados por el usuario) sobrescribiendo si es necesario el anterior ... la pregunta es por qué el registro debe cargarse como un todo, y no para programas separados. – Rook
Existe un concepto de directorio de inicio de usuario en Windows (siempre que hablemos de NT). En un sistema operativo de usuario único, como Win9x, no es relevante de todos modos. –
¿Hay una API de Win32 o una variable de entorno para eso? Soy curioso. – yogman
Creó una entrada de punto único para todo el control de configuración de la aplicación del sistema. Hubiera sido un buen caso de uso para una base de datos de red incorporada (por ejemplo, Raima utilizada por Rational) o una base de datos de texto (cdb de Bernstein).
¿Qué base de datos de red integrada y rápida habría sido apropiada para usar en 1989 en una computadora 386 con 12 MB de RAM? – Michael
@Michael: si la interfaz y la implementación están separadas, la estructura subyacente podría haber sido reemplazada fácilmente por una base de datos integrada. En cualquier caso, por razones de argumento, estoy seguro de que tanto Raima como cdb estaban disponibles en 89, en DOS. –
Así que cuando el registro binario se corrompe, usted acaba de renunciar e ir a comprar la nueva versión de Windows para instalar una nueva.
Buen punto :) Veo el registro se corrompe con bastante frecuencia – justadreamer
- 1. ¿Por qué existe Mingw?
- 2. ¿Por qué eval() existe?
- 3. ¿Por qué existe ActivePython?
- 4. ¿Por qué `ScalaObject` existe?
- 5. ¿Por qué existe Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals()?
- 6. ¿Cuándo y por qué debería almacenar datos en el Registro de Windows?
- 7. ¿Por qué existe Convert.ToInt32 (DateTime)?
- 8. Ensamblador: ¿por qué BCD existe?
- 9. Si existe el registro, actualice Else Insert
- 10. Escribir/Leer en el registro de eventos de Windows
- 11. Cómo funciona el registro COM en Windows
- 12. ¿Por qué usar singleton para el registro de aplicaciones?
- 13. Cakephp comprobar si existe registro
- 14. ¿Por qué mi servicio de Windows no escribirá en mi archivo de registro?
- 15. Acceso a Registro de Windows
- 16. ¿Por qué Tomcat dobla mis líneas de registro en el archivo de registro catalina.out?
- 17. Comprobando si existe una clave de registro
- 18. ¿Por qué gcc movl al mismo registro?
- 19. Pruebe si existe valor de registro
- 20. Por qué mi costumbre entradas de registro log4net se muestran en la motosierra en Windows 7
- 21. Existe el registro de Android() en la base de datos?
- 22. ¿Por qué se necesitan importar el registro e importar logging.config?
- 23. ¿Hay un "diccionario" de registro de Windows que explique la totalidad (o la mayoría de) el registro de Windows?
- 24. ¿Por qué existe la palabra clave async
- 25. ¿Por qué existe EXCEPT en T-SQL?
- 26. ¿Por qué existe la función document.getElementById()?
- 27. PDO :: PARAM_FLOAT no existe, ¿por qué?
- 28. aplicación ASP.NET no el registro en el registro de eventos de Windows
- 29. ¿Por qué $ ('# id') devuelve verdadero si el id no existe?
- 30. Por qué "delete [] [] ... multiDimensionalArray;" el operador en C++ no existe
Me gustaría verte justificar la afirmación de que un sistema de archivos es una forma más natural de hacerlo. – Rob
Esto debería ser Wiki de la comunidad, IMHO – Seb
¿Has buscado en/etc/en linux recientes? Cuento 2389 archivos en totat, incluyendo subdirectorios. No es congruente, no es simple, y aunque algunos de ellos podrían no ser visibles, cosas como sendmail.cf, named.conf, ntp.conf nunca fueron perfectamente comprensibles. – nos