Verschieben des eigenen Programms und Einrichten des Autostart

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von rennmausrammler.

    Verschieben des eigenen Programms und Einrichten des Autostart

    Guten Tag alle zusammen !!
    Ist mein erster Tag und erster Beitrag hier im Forum.

    Ich habe ein Programm in Visual Basic 2010 Express erstellt und dieses als .exe File abgespeichert, klappt alles soweit ganz gut.
    Habe die lezten Tage von morgens bis Abends im Internet nach Möglichkeiten gesucht, das mein Programm unter HKEY_LOCAL_MACHINE einen Eintrag in der Registry für den Autostart vornimmt, allerdings ohne Erfolg. Das einfache Erstellen einer Verknüpfung in den Autostart Ordner under C: klappt, ist aber nicht ganz nach meiner Vorstellung. Meine Frage wäre jetzt ob jemand hier ein Listing kennt, welches auch wirklich funktioniert.

    Meine 2te Frage wäre ob es programmiertechnisch möglich wäre das sich das Programm durch öffnen an einen im Programm angegebenen Pfad kopiert, oder müsste man das mit einer Setup datei realisieren ?

    mfg Marco

    rennmausrammler schrieb:

    Meine 2te Frage wäre ob es programmiertechnisch möglich wäre das sich das Programm durch öffnen an einen im Programm angegebenen Pfad kopiert, oder müsste man das mit einer Setup datei realisieren ?

    Das Programm wäre dann 2x auf dem Rechner, denn löschen kann sich ein Programm selbst nicht. Nutze ein Setup-Programm.
    Frage:
    Ist Dein Programm so gut / wertvoll / weit verbreitet, dass sich dieser Aufwand lohnt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hast du bei der Eintragung in die Registry die Schreibberechtigung gesetzt?

    VB.NET-Quellcode

    1. Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True).SetValue(Me.Text, Application.ExecutablePath)


    Alternativ sollte auch ein Eintrag im Schlüssel "Software\Microsoft\Windows NT\CurrentVersion\Winlogon" funktionieren.


    Könnte man nicht so vorgehen?
    • Datei kopieren
    • Neue Datei mit "altem" ExecuteablePath als Argument ausführen
    • Alte Datei beenden
    • Wenn in neuer Datei Argument ungleich "" ist, alte Datei löschen
    Wäre wohl reichlich umständlich und wahrscheinlich ziemlich sinnfrei, aber sollte funktionieren, oder?
    Hallo, erstmal danke für die Antoworten.
    Den Lösungsvorschlag unter dem Link von Marcus Gräfe werde ich heute Mittag ghleich mal testen, wobei es mich wundert das in diesem Beispiel der
    Code im Vergleich zu den Lösungen die ich vorher ausprobiert habe relativ kurz ist.

    @Hatschi
    Da müsste ich aber erstmal den Pfad meiner ausgeführten Datei rausbekommen und diesen dann als QuellPfad eintragen, hat jemand dafür noch eine Möglichkeit ?

    @RodFromGermany
    Wenn ein Setup Programm eine geeignete Lösung wäre, würde ich mich auch in dieses Thema einlesen.
    @lordknoblauch
    Hey, dann müsste, wenn ich meine Datei nch C:\Programme verschieben will mein Code

    FileSystem.FileCopy("Application.ExecutablePath", "C:\Programme")

    heißen ?
    Da schmeißt er mich mit dem Fehler
    Die Datei "Application.ExecutablePath" konnte nicht gefunden werden.
    raus ???
    Und der Ordner heißt nicht "C:\Programme", sondern "C:\Program Files\". Das wird beim deutschen Windows nur so angezeigt.

    Edit: Und was ist FileSystem.FileCopy()?
    Verwende IO.File.Copy()
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Jep, das einzige Programm, dass diese Verknüpfungen untersagt/nicht unterstützt, heißt Explorer.exe. Man kann sogar ohne Adminrechte in Programme bzw. Program Files schreiben, dann verschiebt Windows das heimlich in den VirtualStore-Ordner. ;)
    | Keine Fragen per PN oder Skype.