Autostart per Registry



  • Ich wollte das mein Program automatisch bei jeden Windowsstart mit starten. würde das gerne mit der Registry lösen. Ich weiss zwar das man einen Eintrag machen muss in "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" oder so aber ich weiss weder wie ich den Eintrag mache oder wie der Eintrag genau aussehen muss. Wäre nett wenn mir jemand helfen könnte. Benutze BC++ 5. Ist doch sicherlich nicht all zu schwer. .... Hoffe ich 😃



  • Okay Sorry ... das Problem hat sich gelöst nehm ich an.:

    HKEY hkey; 
    HKEY KEY = HKEY_LOCAL_MACHINE; 
    char place[100]= {"Software\\Microsoft\\Windows\\CurrentVersion\\Run"}; 
    char name[100]= {"DeinProgramm"}; 
    char value[300]= {"C://beispielpfad"}; 
    
    RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey); 
    RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value)); 
    RegCloseKey(hkey);
    

    Hab jetzt bloss das Problem das ich irgendwie den Pfad rausbekommen muss wo mein Programm liegt und das dann in Zeile 5 übergebe. Hat da jemand eine Idee ?



  • In der VCL gibt es TRegistry für den Zugriff auf die Registry. Da mußt du nicht mit WinApi-Funktionen rumhantieren.

    Application->ExeName Enthält Pfad und Dateinamen des Programms
    ExtractFilePath() extrahiert den Pfad
    ExtractFileName() extrahiert den Dateinamen



  • Ok vielen Dank Morris Szyslak. Das mit den Dateipfaden klappt wunderbar. Ok hab mir jetzt die TRegistry Funktion mal in der borland C++ Hilfe angeschaut. da steht dann zum erstellen eines neuen Schlüssels

    bool __fastcall CreateKey(const AnsiString Key);

    Das Problem ist ich blicke da nicht genau durch. Wie genau müsste denn der Code aussehen wenn wenn ich mein momentan laufendes Programm in die Registry schreiben möchte so das es bei jeden Start automatisch mitstartet. Ein Beispiel wäre toll.



  • Nimm lieber die OpenKey-Methode. Diese erstellt den Schlüssel neu, sofern er noch nicht existiert. Beispiele sollten aber in der Hilfe stehen...

    Ich helf Dir mal auf die Sprünge:

    TRegistry* Reg = new TRegistry();
    Reg->RootKey = HKEY_CURRENT_USER;
    Reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
    ...
    Reg->CloseKey();
    delete Reg;
    

    Du musst Dich jetzt nur noch über die Verwendung/Erstellung von Values kümmern.


Anmelden zum Antworten