Wie erstelle ich eine Verknüpfung (.lnk) für meine Anwendung zum Startordner programmgesteuert in .NET / C #

Meine Anwendung verfügt über eine Startverknüpfung pro Computer (nicht pro Benutzer). Ich kann während des Installationsvorgangs problemlos eine Verknüpfung erstellen. Mein Problem tritt auf, wenn der Benutzer es später entfernt und dann versucht, es wieder zu aktivieren. Mit anderen Worten, sie deaktivieren RunOnStartup (wodurch die Startup-Tinte gelöscht wird) und entscheiden zu einem späteren Zeitpunkt, dass sie beim Start ausgeführt werden sollen, damit sie wieder in die Einstellungen zurückkehren und sie erneut aktivieren.

Anscheinend ist dies eine ziemlich häufige Beschwerde bei .NET, dass es keinen nativen Weg gibt, Verknüpfungen zu erstellen. Habe aber keine sehr gute Lösung gefunden.

Lösungen, die ich gefunden / in Betracht gezogen habe:

Erstellen Sie stattdessen eine Verknüpfung. Einfach eins kopieren. Dies könnte eine gute Lösung sein. Ich kann mich nicht darauf verlassen, dass es einen Startmenü-Link gibt. Aber ich denke, ich könnte wahrscheinlich einen erstellen und im Programmverzeichnis behalten ... Dies überträgt das Problem auf meinen Installer, um die Verknüpfung mit dem entsprechenden Pfad erstellen zu müssen, der zum Zeitpunkt der Installation angegeben wird.

Was ist zu tundiese andere Stapelüberlauf Antwort ist und ein COM-Wrapper-Objekt verwenden. Ich möchte COM vermeiden. Es wurde auch 2003 geschrieben. Ich bin mir also nicht sicher, wie gut es Vista unterstützen wird. Ich würde es versuchen, aber ich habe keine Aussichtsbox zur Hand.

Verwenden Sie stattdessen die Registrierung. So mache ich es momentan ... stoße aber auf Probleme unter Vista. Es scheint der allgemeine Konsens zu sein, dass Startmenü-Verknüpfungen der richtige Weg sind, um dies zu tun. Das ist also mein Ziel.

Außerdem muss ich den Fall behandeln, dass ein regulärer Benutzer (kein Administrator) versucht, diese Einstellung zu ändern. In diesem Fall muss ich ordnungsgemäß fehlschlagen oder dem Benutzer im Falle von Vista erlauben, das Administratorkennwort einzugeben, um ein Administrator-Sicherheitstoken zu erhalten. Eine Antwort, die diesen Fall bereits richtig berücksichtigt, wäre fantastisch.

Ich entschuldige mich, wenn dieses Thema bereits behandelt wurde. Ich habe vor dem Posten gesucht.

AKTUALISIEREN: Das Kopieren einer von Ihrem Installationsprogramm erstellten Verknüpfung ist die beste Lösung. Ich werde post code einmal fertig ... lief in einige Hürden mit a) Environment.GetSpecialFolder nicht mit einem Verweis auf das StartMenu, das behoben wurde ... Aber jetzt beschäftige ich mich mit der Erhöhung der Berechtigungen zum Kopieren der Datei auf richtiger Ort. Ich habe eine neue Stapelüberlauf-Frage für dieses Thema erstellt:Wie kann ich eine Datei als "Standardbenutzer" in Vista (dh "Eine administrative Auswahlanwendung") kopieren, indem ich den Benutzer zur Eingabe von Administratoranmeldeinformationen auffordere?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage