Registry-Eintrag mit C++

Hallo Leute,

ich habe mal wieder eine Frage an euch, und zwar habe ich ein Programm mit C++ geschrieben und möchte gern dazu einen Autostart-Eintrag in die Registry einfügen. Wie ich den Registry-Eintrag erstelle, habe ich bereits meiner Literatur entnommen.

Das Problem ist jetzt nur, wie ich diesen Abschnitt im Quelltext ausführe.
Wenn ich den Code dafür in mein Programm einbinde, würde das Programm ja jedes mal, wenn es ausgeführt wird, das Einfügen des Registry-Eintrags wiederholen und das möchte ich verhindern.

Habt ihr da vielleicht eine Idee, wie ich es machen könnte, dass der Eintrag vom Programm nur einmal erstellt wird?

Vielen Dank im Voraus.
MfG
 
Prüfe doch vorher einfach, ob der entsprechende Eintrag schon existiert und wenn nicht, füge ihn ein.
 
Aber wenn ich es jedes mal prüfen muss, wird das Programm doch langsamer, auch wenn es nicht ausschlaggebend ist, aber gibt es keinen anderen Weg, um das zu realisieren?

Du weißt schon wieviele hunderttausend Anfragen beim Starten von Windows auf die Registry ausgeführt werden? Wieviele aberhundert beim Navigieren im Explorer gemacht werden?

Nein ehrlich, eine einzelne Abfrage macht gar nichts. Zudem du das Programm ja wohl kaum mehrere hundert mal pro Sekunde startest, sodass das rein rechnerisch was ausmachen könnte, oder?
 
naja ... rein informationstechnisch nicht ... wenn du in abhänigkeit einer kondition verzweigen willst, musst du die kondition zwangsläufig irgendwann prüfen, und die verzweigungs entscheidung treffen

die frage ist lediglich wie oft du prüfen musst ...

wenn du ein programm hast, dass zeitkritisch im ablauf ist, bei dem es dir nahezu auf jede instruktion ankommt, kannst du falls einer der zweige nur ein einziges mal ausgeführt werden soll die instruktionen der prüfung mit ende des zweiges, zur laufzeit, ändern, so dass beim nächsten mal keine prüfung für diesen zweig mehr stattfindet...

etwas ähnliches lässt sich mit funktionspointern anstellen ... die verzweigende funktion wird ausgetauscht gegen eine funktion die nicht mehr zum entsprechenden zweig führt ...

was du auch tust, der status der betreffenden verzweigung ist flüchtig, sprich überlebt keinen neustart des programms, sofern du nicht dein programm das eigene image ändern lässt ... (oder eine konfigurations datei lädst, was aber zeitaufwändiger sein dürfte als einen regitry schlüssel zu lesen)

lässt du das image ändern, also manipulierst die datei, hast du die konditionale entscheidung nicht beseitig... sie liegt lediglich in der laufzeit des ersten programmlaufs... da auch das mit io operationen verbunden ist, geht hier für zeit drauf

allerdings sind solche "tricksereien" in der regel aufwändig... und eine prüfung eines registry schlüssels im vergleich keine große verzögerung zur laufzeit
 
In der main() meiner Anwendung habe ich eine while(1) Schleife, also die Anwendung läuft immer bzw. die Schleife.

Ich überprüfe jetzt einfach vor der while-Schleife, dann findet die Überprüfung ja immer nur beim Starten der Anwendung statt.

Ist das keine gute Lösung für solch eine Anwendung?
 
Das war wohl auch so gemeint.
Eine ständige Abfrage nach diesem Initialisierungswert wäre in einer While-Schleife auch Quatsch :)

lG
 
Zurück
Oben