Autostart in C



  • Hi Leute,

    Ich hab ein neues Programm in C geschrieben und möchte das es sich nach dem öffnen automatisch in den Autostart Ordner kopiert.Wie geht das genau unter C??

    Danke im voraus 😉



  • Ich denke mal, du willst Windows benutzen. Wenn du weißt, wo der Ordner liegt, genügt fopen, fread, fwrite und fclose als Standard-C-Funktionen. Wenn du es nicht weißt, dann kommst du um die Windows API nicht umher.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hmmm...
    warum trägst du dein tool nicht in den Autostart in der regestrie ein?
    da kann es liegen wo es will, es wird immer gestartet 🙄



  • Der Pfad müsste sich per SHGetFolderPath() mit CSIDL_STARTUP herausfinden lassen. Die Datei dann kopieren, sollte kein problem sein, oder?



  • Ich würds einfach in die AUTOEXEC.BAT kloppen.



  • @rT!f@Ct schrieb:

    hmmm...
    warum trägst du dein tool nicht in den Autostart in der regestrie ein?
    da kann es liegen wo es will, es wird immer gestartet 🙄

    Falsch. Nur solange es nicht woanders hin verschoben wird. Außerdem, warum das Programm nicht einfach da hin kopieren, wo der Nutzer, wenn er es nicht mehr im Autostart haben will einfach löschen kann?



  • ProgChild schrieb:

    Nur solange es nicht woanders hin verschoben wird

    ach ne wirklich, mach keine sachen...😕

    is ja wohl klar, das wenn unter dem angegebenen pfad nix gefunden wird nix starten kann.

    in der registry kannst du halt den eintrag vom tool aus setzen oder löschen wie es dir beliebt, ohne die ganze exe vom system zu schmeißen oder kreuz und quer durch die ordner zu kopieren.🕶



  • @rT!f@Ct schrieb:

    in der registry kannst du halt den eintrag vom tool aus setzen oder löschen wie es dir beliebt, ohne die ganze exe vom system zu schmeißen oder kreuz und quer durch die ordner zu kopieren.🕶

    Stichwort: Verknüpfung (http://de.wikipedia.org/wiki/Dateiverknüpfung).

    Ich finde es einfach schöner, wenn der Nutzer einen Standardweg hat, etwas aus dem Autostart zu löschen. Dann muss er sich nicht immer durch irgendwelche Spezialmenüs klicken. Und msconfig kennt keiner. Außerdem kann man mit dem Tool viel zu viel kaputt machen, als das man es einen normalen User bedienen lassen sollte.



  • BlueBreZZe schrieb:

    ...das es sich nach dem öffnen automatisch in den Autostart Ordner kopiert

    von einer verknüpfung war hier nie die rede...

    und welcher weg nun schöner ist oder nicht ist ansichtsache und bietet keine diskusionsgrundlage. ne verknüpfung anzulegen, wenn man es nicht gerade über installshield oder solche programme bei der installation macht, ist aufwendiger als nen eintrag in der registry zu setzen

    auserdem weis ich nicht wie du mit der registrie umgehst, aber in meinen tools biete ich dem user unter option nen haken an, mit dem er mit einem klick das tool in den autstart setzt oder daraus wieder entfernt.



  • @rT!f@Ct schrieb:

    von einer verknüpfung war hier nie die rede...

    Nö. Aber selber denken ist ja durchaus noch erlaubt.

    @rT!f@Ct schrieb:

    ne verknüpfung anzulegen, wenn man es nicht gerade über installshield oder solche programme bei der installation macht, ist aufwendiger als nen eintrag in der registry zu setzen

    Zwei API aufrufe.

    @rT!f@Ct schrieb:

    auserdem weis ich nicht wie du mit der registrie umgehst

    Was sollen solche persönlichen Beleidigungen?

    @rT!f@Ct schrieb:

    aber in meinen tools biete ich dem user unter option nen haken an, mit dem er mit einem klick das tool in den autstart setzt oder daraus wieder entfernt.

    Ich rede hier von einer einheitlichen Stelle an der man sämtliche Programme die im Autostart stehen verwaltet. Und da ist der Autostart-Ordner sehr gut, denn den kennt der Nutzer. Würde sich jedes Nichtsystem-Programm, welches sich in den Autostart rein schreibt, dort hinterlegen, so würde sich der Nutzer nicht wundern, warum Windows plötzlich Jahre zum starten braucht.



  • ProgChild schrieb:

    Zwei API aufrufe.

    allein bis du IShellLink voll hast um ein einigermasen vernünftige verknüpfung zu setzen, hast du schon längst den eintrag in der registry gesetzt.

    ProgChild schrieb:

    Was sollen solche persönlichen Beleidigungen?

    ist keine und sollte auch kein persönlicher angriff sein deshalb schrieb ich was ich schrieb. solltest du dich deswegen angegriffen fühlen, ist das dein problem und solltest mal bei dir kucken weshalb das so ist. 🙄

    ProgChild schrieb:

    Ich rede hier von einer einheitlichen Stelle an der man sämtliche Programme die im Autostart stehen verwaltet.

    genau das ist die registrie, eine einheitliche stelle die alle programme und die benutzerdefinierten einstellungen verwaltet. unteranderem auch den autostart.

    ProgChild schrieb:

    Und da ist der Autostart-Ordner sehr gut, denn den kennt der Nutzer.

    das ich nicht lache... otto normalverbraucher kennt nicht mal den ordner. die kennen allenfalls die tools mit denen sie arbeiten müssen/wollen und das wars.

    ProgChild schrieb:

    Würde sich jedes Nichtsystem-Programm, welches sich in den Autostart rein schreibt, dort hinterlegen, so würde sich der Nutzer nicht wundern, warum Windows plötzlich Jahre zum starten braucht.

    deshalb die option für den benutzer das ER entscheiden kann ob und wann das tool in den Autostart eingetragen wird.



  • #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(void)
    {
        BYTE path[]=__FILE__;
    
        HKEY hKey;
        RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0);
        RegSetValueEx(hKey,"MeinProgramm",0,REG_SZ,path,strlen(path)+1);
        RegCloseKey(hKey);
    
        printf("Hello World\n");
        system("pause");
    
        return EXIT_SUCCESS;
    }
    

    hoffe ich konnt helfen 😉


Anmelden zum Antworten