Seite 2 von 2

Verfasst: 07.11.2004 16:59
von NicTheQuick
Registry schön und gut. Ich bevorzuge für meine Programme aber bisher immer noch die gute alte INI-Datei, die sich im selben Ordner befindet wie die dazugehörige Executable. So kann man das Programm später auch einfach wieder löschen ohne umständlich noch einen Uninstaller oder so etwas zu programmieren, der die Registry säubert, die Dateien löscht und sich dann noch selbst eliminiert, was ja auch nicht so einfach ist.

Verfasst: 07.11.2004 17:13
von Andre
NicTheQuick hat geschrieben:Registry schön und gut. Ich bevorzuge für meine Programme aber bisher immer noch die gute alte INI-Datei, die sich im selben Ordner befindet wie die dazugehörige Executable. So kann man das Programm später auch einfach wieder löschen ohne umständlich noch einen Uninstaller oder so etwas zu programmieren, der die Registry säubert, die Dateien löscht und sich dann noch selbst eliminiert, was ja auch nicht so einfach ist.
Entspricht auch genau meiner Meinung.

Das war schon auf dem guten alten Amiga so Standard, alle Dateien im gleichen Verzeichnis und bei Bedarf ist mit Löschen des Ordners alles Notwendige getan. :D

Verfasst: 07.11.2004 17:19
von Danilo
GPI hat geschrieben:Da fällt mir ein:

Wo darf eigentlich ein Programm seine Daten in die Registry "reinpfuschen"?
Lies doch mal MSDN/PSDK -> Registry -> About the Registry -> Predefined Keys

In HKEY_CURRENT_USER kommen die "application preferences"
des Benutzers rein.
"In HKEY_CURRENT_USER, software vendors store the current
user-specific preferences to be used within their applications.
Microsoft, for example, creates the HKEY_CURRENT_USER\Software\Microsoft
key for its applications to use, with each application creating its own
subkey under the Microsoft key."

Wenn Du mehrere Programme auf dem Markt hast kannste
also "HKEY_CURRENT_USER\Software\GPIsoft" machen und
dort rein dann Unterverzeichniss wie "jaPBe" usw.
Bei einem Programm dann halt nur einen Subkey,
"HKEY_CURRENT_USER\Software\jaPBe"

Die Docs von MS sagen das eig. alles, also am besten mal
lesen was Du genau brauchst.
Andre hat geschrieben:Das war schon auf dem guten alten Amiga so Standard,
Du hast überlesen das es auf Windows nicht mehr *offizieller
Standard* ist, sondern da ist es die Registry. ;)

Verfasst: 07.11.2004 17:23
von helpy
Hi NicTheQuick,
NicTheQuick hat geschrieben:Registry schön und gut. Ich bevorzuge für meine Programme aber bisher immer noch die gute alte INI-Datei, die sich im selben Ordner befindet wie die dazugehörige Executable. So kann man das Programm später auch einfach wieder löschen ohne umständlich noch einen Uninstaller oder so etwas zu programmieren, der die Registry säubert, die Dateien löscht und sich dann noch selbst eliminiert, was ja auch nicht so einfach ist.
So musst Du aber eine eigene Verwaltung für Benutzer-abhängige Einstellungen schreiben. Wenn Du die Registry (Current User) oder evt INI-Dateien im aktuellen Benuter-Verzeichnis verwendest, dann wird die Benutzerverwaltung von Windows übernommen.

cu, helpy

Verfasst: 07.11.2004 17:41
von Andre
Danilo hat geschrieben:Du hast überlesen das es auf Windows nicht mehr *offizieller Standard* ist, sondern da ist es die Registry. ;)
Nee, überlesen habe ich das nicht. Ich halte mich dann - in diesem Fall - einfach nicht dran... :mrgreen: :lol:

Verfasst: 07.11.2004 17:59
von PBZecke
helpy hat geschrieben:
So musst Du aber eine eigene Verwaltung für Benutzer-abhängige Einstellungen schreiben. Wenn Du die Registry (Current User) oder evt INI-Dateien im aktuellen Benuter-Verzeichnis verwendest, dann wird die Benutzerverwaltung von Windows übernommen.

cu, helpy
Genau! Meine Programme werden oft in Firmen eingesetzt, mit mehreren Nutzern. Die Einstellungen in einer INI zu speichern ist da unmöglich. Die Registry hat da einfach den Vorteil, dass jeder Nutzer seine eigenen Einstellungen und Daten hat, ohne dass man selbst etwas am Programm dafür machen muss. Wenn man seine Einstellungen in INI's im Programmverzeichnis speichern will muss man außerdem Schreibrecht in diesem Ordner haben, sonst kann man gar nichts in die INI schreiben. Und c:\programme ist für "NormalUser" gesperrt, außer der Nutzer ist als Admin eingeloggt.

Ich habe es früher genauso gerne gemacht. Alle Dateien ins Programmverzeichnis! Aber habe immer wieder Berichte meiner Nutzer erhalten über Probleme meiner Programme im Umgang mit NT, die genau darauf zurückzuführen waren!

Meine Meinung ist also: INI wenn das Programm für den Eigenbedarf bestimmt ist, und REG wenn man das Programm an Kunden abgeben will.

Verfasst: 07.11.2004 18:00
von NicTheQuick
helpy hat geschrieben:So musst Du aber eine eigene Verwaltung für Benutzer-abhängige Einstellungen schreiben. Wenn Du die Registry (Current User) oder evt INI-Dateien im aktuellen Benuter-Verzeichnis verwendest, dann wird die Benutzerverwaltung von Windows übernommen.

cu, helpy
Daran hatte ich jetzt eigentlich nicht gedacht. Aber das ist mir auch irgendwie egal. Wenn mein Programm für verschiedene Benutzer ist, dann können sie das ja auch im Programm selbst auswählen.
Dann haben sie eben Pech gehabt.

Aber bevor sich jetzt jemand über meine Programmierweise aufregt: Würde ich ein kommerzielles Projekt programmieren, würde ich mich auch an den Standard halten.

Verfasst: 07.11.2004 18:28
von Marc
Mittlerweile ist auch Microsoft aufgefallen, daß sie vergessen haben, die Registry auch mal wieder schrumpfen zu lassen - bei den neuen Programmen für .net ist ja die Empfehlung von Microsoft, die Daten als XML im Programmverzeichnis abzulegen, weil das ja das leichte installieren bzw. deinstallieren ermöglicht.

Gut, daß ich noch nie die Registry bei meinen Programmen genutzt habe (aus genau diesem Grund) - damit bin ich jetzt wieder im Trend... :lol:

cu
Marc

Verfasst: 07.11.2004 19:33
von GPI
Mehrere Benutzer sind auch kein Problem, da gibts verschiedene möglichkeiten.

Den Benutzernamen kann man ja abfragen. Dann heißt die datei nicht programm.ini, sondern Programm-benutzer.ini. Sollte auch ganz gut klappen. Wenn aus irgendwelchen gründen es nicht so gut ist, kann man das ja auch in Profil abspeichern.

Gleich nächste Frage: "C:\Dokumente und Einstellungen\GPI.PC\Anwendungsdaten" Diesen Ordner kann man ja per Api abfragen (müßte nur mal suchen). Ist der Ordner eigentlich für solche Sachen freigegeben? Ich möchte ungern in die Eigene-Dateien schreiben.

Übrigends: Großes Problem bei der Registry-Methode: Namensgleicheit von Programmen. Man registriert ja nirgends die "Ordner"-Namen in der Registry zentral, so das zwei programme sehr wohl den gleichen Platz beanspruchen. Das kann zur Verwirrung der Programme führen. Da wurde meiner Meinung nach nicht ganz mitgedacht.

Verfasst: 07.11.2004 21:49
von Team100
M$ darf sich durchaus etwas von mir wünschen :mrgreen: , nämlich die
ausschließliche Benutzung der Registry, aber die Praxis sieht völlig anders aus,
zumindest aus meiner Sicht.

Wir schreiben hier kommerzielle Programme, die für
Leistungsabrechnungen aller Art verwendet werden. Mehrere hundert
User benutzen auf mehreren hundert PCs verstreut im ganzen Land
die Software. Die PCs gehen uns nichts an, sie sind vom Kunden
bereitgestellt und werden von seinem PC-Support gewartet.

Früher haben wir auch die Einstellungen in der Registry gespeichert, aber mit
der Zeit konnten wir das einfach nicht mehr supporten:

Erstens:
- Jeder (mit Berechtigung) kann die Registry editieren und auch in deinen
Einstellungen rumwühlen.
- Das tun auch Virenprogramme, Cleaning-Programme und was es sonst
noch an Tools gibt, all das, ohne daß man es erfährt.

Das hat zur Folge, daß man bei jeder Abfrage in der REG alles durch
eine komplette Plausibilitätsprüfung laufen lassen muß, weil auch ungültige
Einträge drinnen stehen können. Das kann Aufwand sein, wen man
20, 50 oder gar hunderte Einstellungen hat, die ev. auch gegeneinander
kritisch sind.

Zweitens:
- Die Registry kann jederzeit gegen eine ältere Version getauscht werden,
ohne daß man darauf Einfluß hat, z.B. durch Kopieren mit Regedit.
Irgendwer installiert ein neues Programm, irgendwas läuft nicht
und irgendwer erinnert sich, daß es ja noch eine Sicherheitskopie der
Registry gibt....

Ja , und was ist nun, wenn so eine fehlerhafte Einstellung in der REG
auftaucht ?? Dann klingelt das Telefon und es braucht Zeit, Zeit
und nochmal Zeit bis man mit dem lokalen PC-Supporter oder noch
schlechter dem Benutzer des PC versucht, das zu regeln und er letztendlich
doch das Programm (wo ist denn nur die CD?) neu installieren muß
und seine 50 Einstellungswerte (böse gesprochen) fort sind.....

Also, das alles konnten wir uns einfach nicht mehr leisten, deshalb:

- wir haben komplett auf eigene .INIs umgestellt

- mit integrierter Benutzerverwaltung, das war einfacher zu erstellen
als die ganzen Plausibilitätsprüfungen und Versionschecks,
Fehlerbehandlung etc.

- die .INIs sind verschlüsselt, redundant sowie
prüfsummengesichert.

- in 97% aller Anwendungen können wir diese auf einem File-Server
zentral ablegen, bestens gesichert und von uns auch einfach zu
warten. Wir wissen dadurch, welche Voreinstellungen unsere Kunden
bevorzugen, können dadurch bei Programmupdates besser
reagieren, häufig gewählte Optionen verbessern und nicht benötigte
entsorgen.

- Das Installieren der Software kann auch vollständig entfallen:
In vielen Fällen ist es möglich, das Executable auf dem Fileserver zu
deponieren ( Vorteil von PB mit seinen kleinen EXE) und nur eine
Verknüpfung zu setzen.

Seitdem wir wieder die .INI Dateien haben, hat sich der Support-
Aufwand massiv gemindert, besser gesagt es gibt keine Probleme
mehr mit Voreinstellungen & Co ..... es kann sie ja auch niemand mehr
ändern außer unser eigenes Programm tut dies.

Wir haben auch Aufträge gelandet, weil wir REG-neutrale Programme
anbieten konnten, der Mitbewerb nicht.....aber noch nie hat jemand
von unseren Kunden verlangt, daß das Programm die Registry
gemäß M$-Vorgabe benutzen MUSS!

Etliche Großunternehmen machen auch REG-neutrale Programme zur
Bedingung.

Also: Die alleinige Benutzung der REG macht IMHO nur dann Sinn, wenn man auch
die 100%ige Kontrolle und Support über den PC hat.
Dann kann es - auch wieder nur bei mehreren Benutzern - Vorteile bieten.

Ansonsten: Die Registry nur wenn absolut notwendig benutzen...
Der Trend geht ohnedies wieder weg vom Eintragen in der REG.

Betrachtet die INI doch genauso als Bestandteil des Programmes
wie eine Help-Datei oder eine readme.txt.

Klar auch, daß M$ mit in der REG eingetragener Software mehr Freude
hat als mit INIs. Die REG läß sich ja auch leichter ausspionieren....... :mrgreen:

Cu Team100