Die aktuelle exe als Verknüpfung in Autostart packen

  • VB.NET

Es gibt 46 Antworten in diesem Thema. Der letzte Beitrag () ist von PascalN.

    hy

    Wenn du willst, dass für jeden Benutzer getrennt der Autostart angelegt wird, nimm Folgenden code.

    Ich würds lieber in die Registry auslagern, ist eleganter.
    Wenn du weitere Hilfe brauchst, sag Bescheid ;).
    Natürlich ist das eleganter aber ich kenne keine möglichkeit die für die benutzer getrennt in der registry zu ändern.

    Wichtig:
    Zuerst musst du den COM-Verweis namens Microsoft Shell Controls And Automation
    hinzufügen.

    Function für Shortcut erstellen:

    VB.NET-Quellcode

    1. Public Function CreateShortcut(ByVal sLinkFile As String, _
    2. ByVal sTargetFile As String, _
    3. Optional ByVal sArguments As String = "", _
    4. Optional ByVal sDescription As String = "", _
    5. Optional ByVal sWorkingDir As String = "") As Boolean
    6. Try
    7. Dim oShell As New Shell32.Shell
    8. Dim oFolder As Shell32.Folder
    9. Dim oLink As Shell32.ShellLinkObject
    10. ' Ordner und Dateinamen extrahieren
    11. Dim sPath As String = sLinkFile.Substring(0, sLinkFile.LastIndexOf("\"))
    12. Dim sFile As String = sLinkFile.Substring(sLinkFile.LastIndexOf("\") + 1)
    13. ' Wichtig! Link-Datei erstellen (0 Bytes)
    14. Dim F As Short = FreeFile()
    15. FileOpen(F, sLinkFile, OpenMode.Output)
    16. FileClose(F)
    17. oFolder = oShell.NameSpace(sPath)
    18. oLink = oFolder.Items.Item(sFile).GetLink
    19. ' Eigenschaften der Verknüpfung
    20. With oLink
    21. If sArguments.Length > 0 Then .Arguments = sArguments
    22. If sDescription.Length > 0 Then .Description = sDescription
    23. If sWorkingDir.Length > 0 Then .WorkingDirectory = sWorkingDir
    24. .Path = sTargetFile
    25. ' Verknüpfung speichern
    26. .Save()
    27. End With
    28. ' Objekte zerstören
    29. oLink = Nothing
    30. oFolder = Nothing
    31. oShell = Nothing
    32. Return True
    33. Catch ex As Exception
    34. ' Fehler! ggf. Link-Datei löschen, falls bereit erstellt
    35. If System.IO.File.Exists(sLinkFile) Then Kill(sLinkFile)
    36. Return False
    37. End Try
    38. End Function


    und der code für In Autostart einfügen:

    VB.NET-Quellcode

    1. CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Startup) & "\NAME DER RESULTIERENDEN VERKNÜPFUNG.lnk", My.Application.Info.DirectoryPath & "\NAME DER EXE.exe")


    und noch der code für Aus dem Autostart entfernen:

    VB.NET-Quellcode

    1. If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.Startup) & "\NAME DER RESULTIERENDEN VERKNÜPFUNG.lnk") = True Then
    2. My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.Startup) & "\NAME DER RESULTIERENDEN VERKNÜPFUNG.lnk")
    3. else
    4. MsgBox("Autostart war schon Deaktiviert")
    5. end if


    hoffe das hilft dir weiter
    :P Mfg Aligator :P
    Okay hier nochmal kompakter.
    War gestern Abend etwas zu ungenau^^

    Also:

    Ich hab ne offene Anwendung als exe. Diese soll in ein x-beliebiges Verzeichnis kopiert werden. Von dort soll eine Verlinkung in den Autostart erfolgen (Alle User).

    Wenn ihr mir soweit helfen könntet wäre super.

    Daraus bau ich mir dann noch ne Überprüfung ob die Verlinkung noch da ist und wenn nicht kopiere ich eine neu in das Verzeichnis.
    genau pascaln

    des is doch schon in meinem code integriert.

    (hast du ihn dir überhaupt angeschaut? ERST lesen, DANN schreiben!)

    //EDIT:
    @ PascalN
    Eine Verknüpfung erstellst du so: vbarchiv.net/tipps/details.php?id=1601
    Autostart: Siehe oben ;)
    genau daher hab ich den code.
    :P Mfg Aligator :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „aligator“ ()

    nein nicht auf dich
    ich meine OhManIchAnfänger
    nachdem ich meinen code geschrieben hab, hat er dann
    Okay hier nochmal kompakter.
    War gestern Abend etwas zu ungenau^^

    Also:

    Ich hab ne offene Anwendung als exe. Diese soll in ein x-beliebiges Verzeichnis kopiert werden. Von dort soll eine Verlinkung in den Autostart erfolgen (Alle User).

    Wenn ihr mir soweit helfen könntet wäre super.

    Daraus bau ich mir dann noch ne Überprüfung ob die Verlinkung noch da ist und wenn nicht kopiere ich eine neu in das Verzeichnis.

    geschrieben, und genau des macht ja der code. oder?
    und dann später:
    Supi, aber wie finde ich den den aktuelle Pfad der geöffneten Exe raus mit namen zum kopieren?
    das ist ja auch schon im code enthalten.

    hoffe ich hab dich, OhManIchAnfänger, nich beleidigt, :(

    aber wenn jemand einen code hinschreibt, und du dann fragen stellst, die sich beantworten würden, wenn du den code nur genau lesen würdest, dann zeigt dass, dass du ihn nicht oder kaum angeschaut hast.

    ERST lesen, DANN schreiben!


    Dies als tipp für die Zukunft


    soltest du den code jedoch nicht verstehen, dann nehm ich alles zurück :|
    du kannst mich gernefragen :thumbsup:
    :P Mfg Aligator :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „aligator“ ()

    Verknüpfung wird nicht viel bringen, du muß schon dein programm in Regestrierung eintragen, damit deine Anwendung mit System startet. Das System erstellt automatisch in "AutoStart" verknüpfung !

    dotnet-snippets.de/dns/autostart-etwas-kuerzer-SID787.aspx

    oder

    sollte keine Vernüpfung erstellt werden, kannst du Code von aligator verwenden !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemUnknow“ ()

    @SystemUnknow
    Falsch!

    Die Einträge im Autostart Ordner werden zusätzlich gestartet. Die Einträge in der Registry sind nicht automatisch im Autostart-Ordner. Und wenn er eine manuell erstellte Verknüpfung in den Autostartordner erstellt ist das eine Möglichkeit. Eine weitere Möglichkeit wäre es eben, ein Registry-Eintrag zu machen.


    Grüsse
    Pascal
    Wir ham wohl gleichzeitig geschrieben...

    ja , des mit der registry ist halt elegannter, wie du schon gesagt hast.

    Machs am besten mit der registry, ist auch viel weniger code
    :P Mfg Aligator :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „aligator“ ()