Prog automatisch in Autostart



  • naja ok wenns einfacher ist 😉
    wie kann man das programm dann wieder aus den autostart entfernen?



  • TRegistry& regkey=*new TRegistry();
    regkey.RootKey=HKEY_LOCAL_MACHINE;
    bool keygood=regkey.OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false);
    regkey.LazyWrite=false;
    if(keygood)
    	{
    	regkey.DeleteValue("Dein Programm");
    	}
    regkey.CloseKey();
    delete &regkey;
    


  • Wo finde ich TRegistry?
    lol



  • Header includen

    #include <registry.hpp>
    

    Genau sowas steht perfekt in der Hilfe beschrieben.

    Gruss



  • regkey.WriteString("Dein Programm",awpath);

    bei "Dein programm" muss nicht irgendein Pfad oder sowas oder?
    Einfach nur "abc"?



  • Hallo

    der vollständige Pfad ist in der Variablen awpath drin.
    Das andere ist nur ein beliebiger Name, der angezeigt wird.

    bis bald
    akari



  • Hi Leute,

    hab das so gemacht wie damals schon diskutiert und lief bis vor kurzem auch alles wunderbar, nur musste ich jetzt plötzlich feststellen, dass mein Programm, an dem sonst keinerlei Änderungen ausser die mit dem Autostart drin ist, nun plötzlich die ganzen Einstellungsdateien nicht mehr findet und immer bei null beginnt.

    Beende ich das Programm und starte es dann neu, gehts super.
    Auch wenn ich den Regedit Autostart rausnehme und klassisch eine Verknüpfung unter START->Autostart reinkopier gehts auch super.

    habt ihr eine Ahnung? verhält sich als Admin genauso wie als User, der Regedit Key ist unter HKEY_LOCAL_MACHINE.

    mfg
    Tom



  • Hallo,

    Normalerweise hat ein NichtAdmin keine Schreibrechte in HKEY_LOCAL_MACHINE. Der Admin kann sowas natürlich ändern.



  • Ok, danke mal für den Hinweis, aber eigentlich geht darum, dass das Programm, egal unter welche Rechten, sobald es aus der Registry gestartet wird, die gespeicherten Einstellungen nicht liest und von null anfängt.



  • Hallo

    vermutlich weil beim Start durch die Registry der Arbeitspfad nicht korrekt gesetzt ist, und du sicher auf Konfig-Dateien zugreifst die im Pfad des Programms liegen.
    Dann würde es helfen, wenn du beim öffnen der Konfig-Dateien nicht einfach "config.dat" angibst, sondern

    ExtractFilePath(Application->ExeName) + "config.dat"
    

    um einen absoluten Pfad zu bekommen.

    bis bald
    akari



  • @akari:

    Hi, danke mal für den super Tipp, hat mir schon sehr weitergeholfen, jetzt hab ich aber noch ein Problem:

    kann ich das ganze auch folgendermaßen machen:

    #define SETUP_FILE  ExtractFilePath(Application->ExeName)+"setup.txt"
    

    bei mir gehts nämlich nicht bei allen ifstreams und ofstreams bekomme ich folgende Fehler:

    Keine Übereinstimmung für ifstream::basic_ifstream(AnsiString) gefunden,
    oder
    Keine Übereinstimmung für ofstream::basic_ofstream(AnsiString) gefunden

    Kann mir da jemand weiterhelfen?

    mfg Tom



  • Hallo

    Du solltzest ohne wirklich guten Grund in C++ kein define benutzen. Vor allem wenn es dir wie hier gar nichts bringt.

    DIe Fehlermeldung besagt nur, das ifstream einen const char* erwartet, also gibst du es ihm

    AnsiString setupfile = ExtractFilePath(Application->ExeName) + "setup.txt";
    ifstream stream(setupfile.c_str());
    

    bis bald
    akari


Anmelden zum Antworten