Wann braucht mein c++ programm einträge in die windows registry ?
-
Wenn ich ein c++ programm schreibe ab wann ist es nötig ein eintrag in die registry zu machen ? und reicht dan nicht auch eine txt datei ?
-
Es ist dann und nur dann nötig einen Eintrag in die Registry zu schreiben wenn du einen Eintrag in der Registry benötigst.
Ernsthaft, was soll die Frage?
In der Registry werden u.A. Systemeinstellungen gespeichert. Wenn du eine solche ändern willst, dann musst du in die Registry schreiben. Für die meisten Systemeinstellungen gibt es aber spezielle Funktionen die man verwenden sollte um diese zu ändern.
Weiters ist in der Registry u.A. zu finden welche Programme alle installiert sind + die Information was gemacht werden muss um diese Programme zu deinstallieren. Wenn du also einen eigenen Installer schreiben willst, dann musst du auch in die Registry schreiben. Obwohl ich auch da nachsehen würde ob es nicht vielleicht spezielle Funktionen gibt um diese Einträge anzulegen, auszulesen oder bzw. zu modifizieren.
Und natürlich noch viele weitere Dinge, u.A. Einstellungen von vielen thirdparty Programmen. Diese müssen aber nicht in der Registry gespeichert werden. Bzw. ich würde sogar so weit gehen zu sagen: sie sollten vermutlich nicht in der Registry gespeichert sein.
Wenn du dagegen einfach nur ein "normales" C++ Programm schreiben willst, das halt unter Windows lauffähig sein soll, dann wirst du kaum in die Verlegenheit kommen direkt in die Registry schreiben zu müssen.
Für diverse Settings deines Programms reicht, wie du selbst schon erwähnt hast, ein Textfile. .ini File, XML File - irgendwas - such dir 'was aus.
Du solltest dabei nur achtgeben das File dort zu erzeugen wo es eben liegen sollte.
D.h. bei "portable" Programmen z.B. das Programmverzeichnis, bei installierten Programmen vermutlich besser etwas unter%APPDATA%
.
-
hustbaer schrieb:
Weiters ist in der Registry u.A. zu finden welche Programme alle installiert sind + die Information was gemacht werden muss um diese Programme zu deinstallieren. Wenn du also einen eigenen Installer schreiben willst, dann musst du auch in die Registry schreiben. Obwohl ich auch da nachsehen würde ob es nicht vielleicht spezielle Funktionen gibt um diese Einträge anzulegen, auszulesen oder bzw. zu modifizieren.
Von Microsoft gibts soweit ich weiß auch ein Tool mit dem man einfach Installer "zusammenklicken" kann, ich tip mal drauf das dieses auch diese Registry Einträge anlegt.
Was mir noch einfallen würde sind Informationen wie Netzwerkports etc die für andere Programme interessant sein könnten, will man z.b. eine Datenbank schreiben könnte das denke ich Sinn machen. Ist allerdings nur eine Vermutung, die Windows Registry ist garnicht mein Metier.
-
@seelenquell
Es gibt einige Tools mit denen man sich Installer zusammenklicken oder aus einfachsten Skript-Files "kompilieren" kann. Was ich meinte war ein eigener Installer, im Sinn von mit Hand geschrieben in einer "normalen" (general-purpose) Programmiersprache.
-
Generell sollte eigentlich "jedes" Programm in der Lage sein, nichtvorhandene Einträge mit Standardwerten zu belegen ....
Ob nichtvorhandene einträge dann beim Start/Ende Geschrieben werden oder dann absichtlich weggelassen werden, weils ja die defaults sind, ist Implementations-Sache. Ich bevorzuge 2teres ....
Aber wie so vieles Andere ist eben nichts Perfekt, erst recht nicht software^^Die Standard Zugriffsfunktionen (windowAPI - getprofilestring und co) unterstützen beides.
mit der Low Level api (Registry funktionen) kann man auch alles recht leicht nachbauen.Wenn ich ein c++ programm schreibe ab wann ist es nötig ein eintrag in die registry zu machen ? und reicht dan nicht auch eine txt datei ?
Hier lautet die einfache Antwort: Müssen tut gar nix.
Die Registry ist ein ersatz für config files (inni files und co) in ner zentralen DB. Das bringt windows intern vorteile, für den Anwender bleibt fast alles gleich, für den App entwickler bringts paar wenige vorteile.
Er muss sich halt ned mit dem Dateihandling rumschlagen, und die Ablage nach Scope schon fest sortiert(USER,System, Rechner). Es bringt bissi mehr Standard, wenn man sich dran hält.
Und User Zweige der Registry können über Domainserver synchronisiert werden.
Ging früher nur mit zentralen Home und Config directories auf Servern, was momentan glaub nimmer soo verbreitet ist (die paar firmen wo ich unterwegs war, haben alle lokale home und config verzeichnisse)Dafür ist es Win32 API only ...
generell gehen auch ini files oder ähnliches, man muss nicht die Registry bemühen.
Wer schreibt heut noch Win32 API Programme ?
Die meisten Toolkits (QT ) bringen doch eh nen configurations Handling mit, was man auch nutzen sollte. Bei Qt kann man es ja auch sehr bequem auf den eigenen Geschmakc trimmen, also auch zwischen old ini und Registry umschalten.Ansonsten schreiben doch nur die Installer Ihre Daten in die Registry, um das Uninstall entsprechend zu verlinken so das man es zentral per "Programme und Funktionen" deinstallieren kann. Muss man auch nicht nutzen.
Ciao ...