Warum wird die Windows-Registrierung benötigt?


56

Da ich Probleme in com, Seite an Seite, behoben habe, während ich die Windows-Registrierung leidenschaftlich hasste, habe ich mich gefragt, warum das nötig ist.

Ich war nie gezwungen, ein ganzes Buch über bewährte Verfahren für die Registrierung zu lesen und es dann einfach zu lesen.

Ich habe jedoch Linux und Mac OS verwendet und mir angesehen, wie man mehrere Versionen von Python und seinen Bibliotheken auf demselben * nix-Computer installieren kann.

Da die Registrierung ein freies (wenn auch hässliches) Format hat und für alle möglichen Zwecke verwendet wird, habe ich nie verstanden, welches wesentliche Problem sie zu lösen versucht.

Microsoft möchte beispielsweise nicht, dass zwei verschiedene Versionen von MS Office nebeneinander installiert werden. Sie verwenden die Registrierung, um dies während der Installation zu erzwingen. Diese Einschränkung ist meiner Meinung nach künstlich. Wenn es ihnen wirklich darum ging, ein anderes Verhalten zuzulassen, hätten sie ihre Architektur entsprechend anpassen können.

Unter Mac OS können Sie Apps installieren und entfernen, indem Sie sie einfach in einem bestimmten Ordner ablegen.

Damit,

A) Welches wesentliche Problem versucht es zu lösen? B) Wie lösen andere Betriebssysteme das Problem?


2
Anwendungen können auch per Drag & Drop unter Windows installiert werden. Die Eclipse-IDE ist das erste Beispiel, das mir in den Sinn kommt. Es gibt andere, da bin ich mir sicher. Die Registrierung ist auch viele andere Aspekte des Betriebssystems (Ich dachte immer, das war die Konfiguration verwendet , um primäre Zweck ihrer Existenz) und andere Programme, und kann auch in allen Arten von interessanten und kreativen Möglichkeiten missbraucht werden.
FrustratedWithFormsDesigner

Siehe fun.drno.de/flash/howto_turn_windows_into_linux.swf Die Schritte 2 bis 4 bieten einen amüsanten Vergleich dieser Art von Konfigurationsdaten für Windows und Linux. ;)
FrustratedWithFormsDesigner


3
Sie können haben zwei Versionen von Office installiert , so dass die „Einschränkung“ Sie ist erwähnen nicht nur künstliche seine fiktive
Conrad Frix

1
@Job. Ich denke, ich könnte dem zustimmen, außer dass das Problem eine akzeptierte Lösung hat, ein Registry-Fix ​​(Ironie nicht verloren), der sich auf die parallele Ausführung von 2007/2003 bezieht. Wann trat dieses Problem auf, bei dem Sie zwei Office-Installationen nebeneinander ausführen wollten? Übrigens hier ist die KB für das Ausführen von XP und 97 nebeneinander
Conrad Frix

Antworten:


42

Die meisten anderen Antworten sind mehr oder weniger richtig, aber (zusammen mit der Frage) verfehlen sie den Punkt.

Die Registrierung ist ein hierarchischer Datenbankmanager - nicht mehr und nicht weniger.

Die "Fehler", die Sie der Registrierung zuschreiben, sind wirklich unabhängig von der Registrierung selbst. Es handelt sich lediglich um Entscheidungen, die verschiedene Anbieter hinsichtlich der Installation ihrer Programme getroffen haben. Wenn Sie die Informationen auf eine andere Weise, in ein anderes Formular oder in einen anderen Container gespeichert haben, können dieselben Probleme bestehen bleiben.

Angesichts der Unix-Philosophie "Alles ist eine Datei" ist es (oder sollte es nicht überraschen), dass Unix-Systeme (und ähnliche Systeme wie Linux und MacOS) die Informationen als einzelne Dateien im Dateisystem speichern. Dies ist jedoch nicht annähernd so unterschiedlich, wie viele Leute sofort glauben, da das Unix-Dateisystem selbst eine hierarchische Datenbank ist (oder, wenn Sie symbolische Links berücksichtigen, eine Netzwerkdatenbank). Der krasse Unterschied besteht darin, dass auf die Registrierung über eine separate API zugegriffen wird, wobei das Speichern von Konfigurationsdaten in Dateien den Zugriff auf diese Dateien, das Bearbeiten usw. über dieselbe API (und dieselben Tools) wie bei allen anderen Dateien ermöglicht.



11
@Conrad Frix: Warum denken Sie, dass ACID-Transaktionen oder eine Abfragesprache notwendigerweise Teil einer Datenbank sind?
Jerry Coffin

1
@ Jerry, natürlich. Da stimme ich dir zu Aber (wie aus Conrads Kommentar hervorgeht) viele neigen dazu, bestimmte Dinge in Bezug auf die Eigenschaften einer sogenannten "Datenbank" anzunehmen. Ich denke, mein Mediationsversuch ist nur ein Verlust-Verlust-Versuch.
Nicole

1
@Conrad Frix: Einige Dateisysteme sind natürlich nicht hierarchisch. Aber ich wollte nicht die Unix FS jeder war mehr als andere hierarchischen - NTFS (nur zum Beispiel) als gut.
Jerry Coffin

3
@ JBRWilkinson: Du hast Dinge in die falsche Richtung. Es gibt andere Komponenten, die von fest codierten Speicherorten in der Registrierung abhängen (genau wie es Komponenten unter Unix gibt, die von fest codierten Dateipfaden abhängen). Das ändert aber nichts an der Registrierung.
Jerry Coffin

25

Es ist ein Einstellungs-Repository - ein zentraler und etwas standardisierter Ort für Einstellungen, Einstellungen und Lightweight-Profile .

Es wird einfacher zu verstehen, wenn Sie das Gesamtbild aller Dinge betrachten, die ein Betriebssystem für seine Benutzer und Anwendungen speichern muss:

Windows

  • Einstellungs-Repository
    • System: Windows Registry HKEY_LOCAL_MACHINEund speziell ein Großteil davon ist in\SOFTWARE\Microsoft
    • Drittanbieter systemweit: Windows RegistryHKEY_LOCAL_MACHINE
    • Systembenutzerzentriert: Windows Registry HKEY_USERS,[user]\SOFTWARE\Microsoft
    • Benutzerzentriert von Drittanbietern: Windows-RegistrierungHKEY_USERS\[user]\SOFTWARE
  • Anwendungsdateien, die ein Benutzer nicht C:\Users\[User]\AppData in versteckten Ordnern sehen muss
  • Anwendungsdateien, die ein Benutzer möglicherweise C:\Users\[User]\ in nicht ausgeblendeten Ordnern haben möchte, die von der App erstellt wurden

Mac OS X

  • Einstellungs-Repository
    • System und Drittanbieter: /Library/Preferences in com.apple...plistDateien
    • Systemweit von Drittanbietern: /Library/Preferences in plistDateien von Drittanbietern
    • Systembenutzerzentriert: /Users/[user]/Library/Preferences wie oben
    • Benutzerorientiert von Drittanbietern: /Users/[user]/Library/Preferences wie oben
  • Systemweite Anwendungsdateien, die ein Benutzer nicht sehen muss /Library/Application Support
  • Anwendungsdateien, die ein Benutzer nicht sehen muss /Users/[user]/Library/Application Support
  • Anwendungsdateien, die ein Benutzer möglicherweise /Users/[user]/ in nicht ausgeblendeten Ordnern haben möchte

Im Wesentlichen ist die Registrierung identisch mit den Ordnern von Mac OS X /Library/Preferences und nicht viel mehr oder weniger.

Die Tatsache, dass Mac OS nahezu eins zu eins mit organisatorischen Gruppen von System- und Anwendungsdaten übereinstimmt, zeigt, dass die Windows-Registrierung ein vollständig gerechtfertigtes System ist, bei dem es sich nur um eine andere Vorgehensweise handelt

Aufgrund der Tatsache, dass die Registrierung kein Dateisystem ist, ist es schwieriger, Teile der Registrierung zu sichern, wiederherzustellen oder zu migrieren, während andere verbleiben. Daher bevorzuge ich das Mac-System, aber der Zweck ist nahezu identisch.

Beide Betriebssysteme verfügen über Anwendungen, die diese Strukturen in unterschiedlichem Maße verletzen, in der Regel indem sie einen etwas globaleren Kontext verwenden, um Dateien oder Ordner zu erstellen, die nicht wirklich dorthin gehören. Einige Anwendungen erstellen Ordner direkt in C:\oder /ohne Aufforderung. Das macht mich wirklich verrückt!


Übrigens: Während die Drag-and-Drop-Funktion von (den meisten) Mac OS-Anwendungen brillant ist, haben Sie ein ähnliches Problem mit verschiedenen Versionen nebeneinander, obwohl Sie es wahrscheinlich nicht bemerken - da Ihre Einstellungen nicht gespeichert werden in der .appDatei selbst, sondern in Application Supportoder Preferenceswird noch jede Version der Anwendung die gleichen Einstellungen verwenden und sich gegenseitig beeinflussen, es sei denn , die neuere Version explizit einen Ordner mit einem anderen Namen zu verwenden , entscheidet ( IntelliJIDEA70, IntelliJIDEA81usw.)


Richtig, die Registrierung begann ursprünglich als Einstellungs-Repository, als Ersatz für INI-Dateien. Heutzutage wird sie jedoch häufig als allgemeiner Datenspeicher verwendet, daher die aufgeblähten Bienenstöcke.
Synetech

20

Ich habe nie verstanden, welches wesentliche Problem es zu lösen versucht.

Vor der Registrierung verwendete Windows INI-Dateien. Im Blog-Beitrag Warum werden INI-Dateien zugunsten der Registrierung nicht mehr empfohlen? Raymond Chen zählt die Probleme mit INI-Dateien auf, die gelöst werden sollten. Er zählt auch die Probleme auf, die XML-Konfigurationsdateien mit den alten INI-Dateien gemeinsam haben. Dies ist wahrscheinlich das, was es wert ist, betrachtet zu werden, da dies heutzutage in vielen Anwendungen verwendet wird.

... das Pendel ist zurück in die Textkonfigurationsdateien geschwenkt, aber diesmal handelt es sich um XML. Dadurch treten viele der Probleme auf, die INI-Dateien hatten, aber Sie haben den großen Vorteil, dass niemand in XML-Konfigurationsdateien schreibt. sie lesen nur von ihnen. XML-Konfigurationsdateien werden nicht zum Speichern von Benutzereinstellungen verwendet. Sie enthalten lediglich Informationen über das Programm selbst. Schauen wir uns diese Themen noch einmal an.

  • Die Sicherheit von XML-Dateien ist nicht detailliert genug. Da die XML-Konfigurationsdatei jedoch schreibgeschützt ist, wird der primäre Einwand umgangen. (Wenn Sie jedoch möchten, dass nur Administratoren die Berechtigung zum Lesen bestimmter Teile der XML-Datei erhalten, sind Sie in Schwierigkeiten.)
  • Da XML-Konfigurationsdateien schreibgeschützt sind, müssen Sie sich nicht um mehrere Writer kümmern.
  • XML-Konfigurationsdateien können einen Denial-of-Service erleiden. Sie können sie weiterhin exklusiv öffnen und andere Prozesse sperren.
  • XML-Dateien enthalten nur Zeichenfolgen. Wenn Sie Binärdaten speichern möchten, müssen Sie diese irgendwie verschlüsseln.
  • Das Parsen einer XML-Datei ist vergleichsweise langsam. Da sie jedoch schreibgeschützt sind, können Sie das analysierte Ergebnis sicher zwischenspeichern, sodass Sie sie nur einmal analysieren müssen.
  • Programme analysieren XML-Dateien manuell, aber das XML-Format ist bereits gesperrt, sodass Sie es auch dann nicht erweitern können, wenn Sie es möchten. Hoffentlich verwenden diese Programme einen standardkonformen XML-Parser, anstatt ihren eigenen zu rollen, aber ich wäre nicht überrascht, wenn die Leute ihren eigenen benutzerdefinierten XML-Parser schreiben würden, der beispielsweise Anweisungen oder Zeichenfolgen mit mehr als 70 Zeichen verarbeitet.
  • XML-Dateien haben keine Größenbeschränkung.
  • XML-Dateien haben keinen Standardspeicherort.

All dies setzt voraus, dass die Anwendung in der Tat niemals in ihre Konfigurationsdateien schreibt, in denen ich nicht einverstanden bin, aber das würde die Situation nicht verschlechtern und nicht verbessern.


2
Wenigstens ist es ein bisschen ironisch, dass viele Apps jetzt ganz auf die Registrierung zugunsten von INI-Dateien verzichten (weniger bei XML), da die Popularität von „Portabilität“ selbst dank Flash-Laufwerken zunimmt.
Synetech

11

Meine Theorie ist, dass die treibende Kraft keines der oben genannten ist. Es war vielmehr eine Maßnahme gegen Piraterie. In den Tagen vor der Registrierung konnten Sie im Allgemeinen einfach ein ganzes Programm von einem Computer auf einen anderen kopieren. Finden Sie die .DLLs und Sie waren gut zu gehen. Die Registrierung macht dies viel schwieriger zu tun.

Es gibt sehr wenig, was die Registrierung erreicht, was meiner Meinung nach nicht besser durch eine Konfigurationsdatei pro Zweck erreicht werden könnte.

(2014) Um meine Überlegungen hier ein wenig zu erweitern: Ich sehe die Registrierung als ein Gott-Objekt. Wir alle wissen, dass das ein Gegenmuster ist.


7
Microsoft hat also etwas spezielles entwickelt, um die Möglichkeiten der Benutzer einzuschränken.
Dan_waterworth

Auf jeden Fall ein Anti-Muster. Interessante Gedanken.
Brad Thomas

Interessante Perspektive, aber zu der Zeit, als die Registrierung eingeführt wurde, war es immer noch die DOS + Windows-Ära, in der der Krieg zwischen Piraten und Kopierschutz auf dem Höhepunkt war, mit viel schwarzer Magie dank der Hardware-Zugänglichkeit. Es ist unwahrscheinlich, dass jemand zu diesem Zeitpunkt die Registrierung zum Schutz von Kopierrechten weitergibt.
Codism

6

Mein grobes Verständnis ist, dass die Registrierung als eine Art Einstellungs-Repository konzipiert wurde, das die früher verwendeten INI-Dateien überlagert.

(NB, ein grobes Verständnis, das könnte also falsch sein).


5

A) Ich stimme der Antwort von Tim zu.

B) Andere Betriebssysteme verwenden andere Methoden zum Speichern von Programmeinstellungen, z. B. Unix speichert Dateien normalerweise in / etc (globale Dateien) und im Benutzerordner in verschiedenen versteckten Ordnern (Benutzereinstellungen). Daher verwenden sie alle eine Form der Registrierung, mit der Ausnahme, dass sie in einigen Fällen verteilt wird.


3

So wie ich es verstehe (nicht unbedingt genießen)

A) Geben Sie einen "zentralen Speicherort" an, an dem jedes Programm Informationen zu seiner Installation oder Einrichtung speichern kann. Diese Informationen können dann von den Programmen nach Belieben verwendet werden. Anpassung, Pirateriebekämpfung usw.

All diese Informationen, die in dieser Struktur enthalten sind, schützen sie. Denken Sie an die Idee, dass sich Tiere zusammenfinden und mehr Sicherheit in Zahlen. Wenn jedes Info-Bit eine eigene INI-Datei wäre, könnte ein Benutzer es möglicherweise aus einer Laune heraus löschen. Sie können das immer noch tun, indem sie sich in die Registrierung eintragen, aber viele sehen es als eine Art Black Box und werden es nicht anfassen, weil sie befürchten, ihr System zu beschädigen.

B) Mac OS verwendet einzelne Dateien ähnlich wie die INI-Fenster, die vor der Registrierung verwendet wurden.


3

Der offensichtliche Zweck der Registrierung besteht darin, als einziges Repository für alle Konfigurations- und Einstellungsdaten zu fungieren und die Abhängigkeit von Konfigurationsdateien zu beseitigen.

Auf anderen Betriebssystemen werden mit dem Modus operandi anwendungsspezifische Informationen (wie Konfigurationsdateien) in versteckten anwendungsspezifischen Verzeichnissen im Basisverzeichnis des Benutzers gespeichert. (Das Spiel Aquaria speichert beispielsweise Konfigurationsinformationen in $HOME/.Aquaria.) Globale Einstellungsdateien werden in gespeichert /etc/.

Macs machen ihr eigenes Ding: Anwendungsspezifische plistDateien werden (glaube ich) im LibraryVerzeichnis des Benutzers oder des Systems gespeichert .


3

Das Problem liegt nicht in der Philosophie der Registrierung, sondern im Design. Die Registrierung wird vom Betriebssystem verwendet, um wichtige Informationen zum geladenen Programm abzurufen. Anstatt die Informationen nach Bedarf zu laden, werden sie beim Booten alle geladen, was die Leistung des Systems "beeinträchtigen" kann. Das System wird auch gründlich missbraucht, da es von Anbietern mit einer Reihe von Informationen geladen wird und die Informationen häufig nicht entfernt werden, wenn die Software deinstalliert wird.

Im Gegensatz zu Unix, wo alles in Dateien gespeichert und bei Bedarf geladen wird. Das Betriebssystem ist auf diese Weise nicht auf die Programmierkenntnisse des Herstellers angewiesen, um die Leistung zu beeinträchtigen ...


2

Ich kann andere Betriebssysteme nicht kommentieren, aber die Registrierung hilft auch dabei, die Konfiguration einer Anwendung während eines Upgrades oder eines Deinstallations- / Neuinstallationsprozesses beizubehalten. Wenn sich die gesamte Konfiguration in einer INI-Datei befand, die aufgrund eines Upgrades mit zusätzlichen Funktionen ersetzt werden musste, könnten Probleme auftreten oder Sie müssen einen benutzerdefinierten Prozess erstellen, um Konfigurationsdaten in die eingehende INI-Datei einzufügen.

Mit den Daten in der Registrierung können Sie jedoch ein allgemeines Installationspaket (WIX, InstallShield usw.) verwenden, das die Deinstallation / Neuinstallation von Dateien übernimmt, ohne die Anwendungseinstellungen zu berühren.


1

(alle A. Ich bin mir nicht sicher über B)

Ich glaube, das liegt eigentlich an dem (historischen) Punkt, dass die Registrierung als eine Art gemeinsame Schnittstelle für Anwendungseinstellungen fungiert.

Hast du eine Bewerbung? Möchten Sie eine benutzerbezogene Einstellung speichern? Bung es in der Registrierung.

Sie müssen keine Benutzerprofile "sicherstellen" und müssen überhaupt nicht direkt auf das Dateisystem zugreifen. Win32 kümmert sich darum.


1

Es war eine Möglichkeit, den meisten Benutzern etwas Neues, Unbekanntes und Tabu zu erschaffen, damit sie es in Ruhe lassen konnten. .ini und autoexec.bat Dateien können leicht gelöscht oder zum Schlechten verändert werden.

Ändern der Registrierungseinstellungen, oh mein Gott!


1

In der Registrierung werden nicht nur die Anwendungseinstellungen gespeichert, sondern auch andere Programme und Komponenten . Letztendlich denke ich, dass dies der Grund ist, warum es in einer einzigen Datenbank zentralisiert ist und nicht über Tausende von Text- oder XML-Dateien verteilt ist.

Beispielsweise registriert sich eine Komponente, die beispielsweise Videoeffekte ausführt, in der Registrierung, sodass andere Videoanwendungen von ihrer Existenz erfahren und sie verwenden können. Durch ein zentralisiertes System wird das ernsthafte Durcheinander vermieden, da Tausende von Systemen und Anwendungen unterschiedliche Methoden verwenden, um diese Integrationsstufe zu erreichen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.