C++ - Wie machen wir unsere Anwendung starten Sie auf dem computer Start (und natürlich, nachdem sich ein Benutzer angemeldet)?
Wie machen wir unsere Anwendung starten Sie auf dem computer Start (und natürlich, nachdem der Benutzer angemeldet)?
Und Nein, ich bin nicht ein virus.
Tut registry-Bearbeitung-Klang wie eine gute Idee?
Mein OS ist Windows 8.
Jedoch werde ich versuchen, meine Anwendung, die für alle möglichen Fenster OS.
- Dienstleistungen vorgenommen werden können, um zu starten auf start-up.
- Wollen Sie angeben, ein Betriebssystem?
- Ich würde wohl sagen, dass der Lauf Teil der HKCU, wenn Sie auf Windows. Keine Notwendigkeit, zu überfallen, Ihre Autostart-Ordner.
- Sie müssen angeben, dass eine OS - die Antwort unterscheidet sich zwischen Sie
- Sie erhalten downvotes wenn Sie don;t liefern die grundlegenden Informationen, die im Zusammenhang mit der Frage (wie die OS in diesem Fall), weil es zeigt, dass Sie nicht tun, keine Forschung, bevor Sie Fragen.
- Doch ich kann nicht beantworten, für Sie sicher, es gibt eine Vielzahl von möglichen Gründen. Erste, Sie schrieb es alles viel zu schnell, so dass viel Raum für Fragen. Dann Ihre Frage ist sehr breit. Und wäre, selbst wenn OS angegeben wurde.
- Ich denke, das sind einige vernünftige Gründe. Zumindest, dass Sie Jungs gab einen Grund. Ich bin ein Neuling hier. Danke.
- Eigentlich, denke ich, sollten die Benutzer geschoben zu erklären downvotes. Mich, fand ich heraus, dass ich nie brauchen, um downvote, weil ich immer kommentieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg, dies zu tun ist einfach zu fügen Sie eine Verknüpfung zu Ihrer Anwendung ausführbare Datei im Startordner des Benutzers. Sie müssen nicht (und sollen) nicht die Registrierung ändern.
Fortgeschrittene Benutzer, die wissen, wie man dies manuell tun schon, aber es kann auch eine option sein, die Sie zur Verfügung stellen möchten einen Teil von Ihrem Installateur und/oder einen Konfigurations-dialog in der Anwendung.
Dazu von C++ - code, müssen Sie zwei Dinge tun:
Abrufen, die Position des aktuellen Benutzers Autostart-Ordner.
Dies erfolgt durch aufrufen der
SHGetKnownFolderPath
- Funktion und Angabe derKNOWNFOLDERID
der Ordner, der Sie interessiert. In diesem Fall wäreFOLDERID_Startup
.Beispielcode:
Beachten Sie jedoch, dass, während
SHGetKnownFolderPath
ist die empfohlene Funktion zu nutzen, unterstützt wird es nur von Windows Vista und höher. Wenn Sie brauchen, um die Unterstützung für ältere Versionen des Betriebssystems ist, müssen Sie es nennen dynamisch auf neuere Versionen, wo es verfügbar ist, und andernfalls zurückgreifen, um den Aufruf derSHGetFolderPath
Funktion. Das braucht eine andere Art von Bezeichner, ein CSIDL Wert. Die, die Sie wollen, istCSIDL_STARTUP
.Erstellen Sie eine Verknüpfung zu Ihrer Anwendung ausführbare Datei.
Erreicht wird dies mit einem anderen Satz von Shell-API-Funktionen. Ich werde nicht die Mühe zu schreiben Beispielcode hier, weil es ist alles ganz gut erklärt auf der MSDN-Website schon: Shell-Verknüpfungen
Nun müssen Sie nur noch die Punkte verbinden: wenn Sie die Verknüpfung erstellen, um Ihre Anwendung ausführbare Datei, geben Sie die user-Startup-Ordner wie die Ziel-Pfad.
Die einzige andere Sache zu beachten ist, dass es tatsächlich mehrere Autostart-Ordner. Jeder Benutzer hat eine, das ist die, die wir abgerufen vor mit
FOLDERID_Startup
. Über 99% der Zeit, das ist die, die Sie wollen. Setzen Sie eine Verknüpfung auf Ihrem app gibt es dazu, dass es automatisch gestartet werden, wenn sich der Benutzer anmeldet.Allerdings gibt es auch eine globalen Autostart-Ordner, der allen Benutzern gemeinsam sind. Dieser ist gekennzeichnet durch
FOLDERID_CommonStartup
(oderCSIDL_COMMON_STARTUP
) und erfordert administrative Berechtigungen zum hinzufügen von Elementen. Das macht Sinn, natürlich, weil, was Sie in setzen, wird es automatisch gestartet, wenn alle Benutzer auf dem computer anmeldet. Nur Administratoren können auf das Globale Verhalten wie diese. Und die Chancen sind, wird Ihre app nicht brauchen es trotzdem.NTDDI_WINXP
), rufen SieSHGetFolderPath
. Wenn Sie Ziel-Vista und/oder später (>=NTDDI_VISTA
), rufen SieSHGetKnownFolderPath
. Eine solche dynamische Verhalten ist nur selten erforderlich, wenn eine neue Funktion ist nützlich, aber nicht erforderlich.SHGetFolderPath
Funktion noch unterstützt, für die heutige Zeit in Windows 7 und 8, aber es haftet, Weg zu gehen, jederzeit. Wenn Sie bereits mit der aktuellen API, haben Sie eine viel einfachere Zeit, sich auf Ihr code für eine neuere version von Windows. Außerdem gibt es oft Funktionen der neueren API, die es nicht gibt für die älteren. Ich wickle alle von dieser bis in eine Bibliothek.OpenFile
, was ist veraltet seit NT4 oder so.Startmenü
Einfachste Lösung, um Platz
.lnk
von.bat
- Datei in dasStart Menu\On startup
Ordner. Dies ist die einfachste und nicht auch hinterhältig gegen den Benutzer.Registrierung:
Eine andere Lösung ist die Erstellung der Schlüssel in der registry-Schlüssel:
Dies ist nicht transparent - also ein bisschen mehr aggressiv gegen den Benutzer.
HKEY_CURRENT_USER
? Oder den aktuellen Benutzer Ordner "Autostart"?Unter windows Sie können eine Verknüpfung zu Ihrer Anwendung in der
Startup
Ordner, oder Sie können die Implementierung von it as a service.Sind und dass "ich bin kein virus" macht Sie klingen schuldig... Vielleicht ist es ein keylogger? 😉
Gibt es eine Vielzahl von Möglichkeiten, aber Sie alle hängen von Ihrem Betriebssystem. Für windows werfen Sie einen Blick auf die "Aufgabe Schedualer" unter "Administrative tools" in der Systemsteuerung.
Vielleicht so etwas? Beachten Sie, dass dieses code-Schnipsel ist nicht von mir geschrieben.
Was denken Sie?