Programm beim Windows Start Laden ( per Registry !? )?
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
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.
- Andre
- PureBasic Team
- Beiträge: 1765
- Registriert: 11.09.2004 16:35
- Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10 - Wohnort: Saxony / Deutscheinsiedel
- Kontaktdaten:
Entspricht auch genau meiner Meinung.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.
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.
Lies doch mal MSDN/PSDK -> Registry -> About the Registry -> Predefined KeysGPI hat geschrieben:Da fällt mir ein:
Wo darf eigentlich ein Programm seine Daten in die Registry "reinpfuschen"?
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.
Du hast überlesen das es auf Windows nicht mehr *offiziellerAndre hat geschrieben:Das war schon auf dem guten alten Amiga so Standard,
Standard* ist, sondern da ist es die Registry.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Hi NicTheQuick,
cu, helpy
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.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.
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.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
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.
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... 
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
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.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
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.
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...
cu
Marc
Gut, daß ich noch nie die Registry bei meinen Programmen genutzt habe (aus genau diesem Grund) - damit bin ich jetzt wieder im Trend...
cu
Marc
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.
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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
M$ darf sich durchaus etwas von mir wünschen
, 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.......
Cu Team100
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.......
Cu Team100
Kompliziert kann es jeder lösen, aber das wirklich Geniale ist einfach.....