2009-02-17 16 views
13

Ich erstelle ein Programm in C++, die ich in der Lage sein, die Option haben Benutzer haben lassen Sie es automatisch in Windows starten lassen. Wenn ein Benutzer seinen Computer startet, startet Windows automatisch dieses Programm. Ich habe Sachen über das Ändern der Registrierung gelesen oder es in den Startordner gelegt, aber was wäre der beste "saubere" Weg, dies zu tun?Wie erstelle ich ein Autostart-C++ - Programm

+0

diesen Link Siehe http://ask-leo.com/auto_start_how_do_i_run_a_program_automatically_when_windows_starts.html – Vinay

Antwort

15

Startordner ist sauber genug.

Bietet dem Benutzer die Möglichkeit, es bei Bedarf zu entfernen.

+0

bewusst sein, dass, wenn Sie Führen Sie so etwas aus, anstatt einen Dienst auszuführen, damit Ihre App besser von mehreren Benutzern gleichzeitig ausgeführt werden kann. – Eclipse

+1

Ja, ich hasse es wirklich, wenn etwas automatisch startet und ich muss die Registry durchsuchen, damit es nicht wieder läuft. Einige Entwickler verhalten sich so, als ob sie Ihren Rechner besitzen. –

3

Je nachdem, ob Sie ein All-Benutzer oder pro Benutzer installieren sind ausführen, setzen Sie es in den Autostart-Ordner für alle Benutzer oder die pro-Benutzer-Startordner. Der Autostart-Ordner, den Sie im Menü sehen, ist der Zusammenschluss von beiden, aber Nicht-Admin-Benutzer können die Einträge aus dem All-User-Teil nicht entfernen.

Sie müssen dafür eigentlich nichts tun. Benutzer können Ihre normale Verknüpfung zum Startmenü selbst kopieren. Daher kann das beliebige Programm ein Autostartprogramm sein. Muss überhaupt nicht C++ sein.

9

Es gibt viele Möglichkeiten, eine Anwendung automatisch zu starten, aber die einfachste, am häufigsten und IMO am besten sind:

  1. Legen Sie eine Verknüpfung im Autostart-Ordner
  2. an die Registrierung einen Autostart-Eintrag hinzufügen (Software \ Microsoft \ Windows \ CurrentVersion \ Run)

Das Endergebnis ist das gleiche für beide. Ich glaube, der Registry-Weg wird früher im Anmeldeprozess als der Start Weg ausgeführt, aber ich bin mir nicht sicher. In den meisten Fällen macht das keinen Unterschied. Ich bevorzuge die Registrierung, aber das ist persönlicher Geschmack. Sie können den Registrierungsschlüssel oder die Verknüpfung programmatisch in Ihrer App erstellen und löschen.

Mit beiden Optionen können Sie entweder eine Einstellung für alle Benutzer (Alle Benutzer Startordner oder unter HKLM-Schlüssel in der Registrierung) oder benutzerspezifisch (Benutzer Startordner oder unter HKCR-Schlüssel) verwenden.

Im Allgemeinen ist es besser, die Optionen pro Benutzer zu verwenden, da Sie sicher sein können, Schreibrechte in diesen Bereichen zu haben; und jeder Benutzer auf dem Computer kann seine eigene Einstellung haben.

0

Sie können es als Windows registrieren service.You „Qt Solutions“ für leicht machen eine Anwendung als Windows-Dienst verwenden können. dieser Code

+0

Ein Windows-Dienst entspricht in keiner Weise den Anforderungen des OP. Versuchen Sie, Antworten zu verfassen, die tatsächlich für das jeweilige Thema gelten. –

+0

Er kann eine Stapeldatei erstellen, um eine Anwendung als Dienst bereitzustellen oder sie zu deimplementieren. – Qubeuc

-1

Mit können Sie es

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Reg:TRegistry; 
begin 
    Reg := TRegistry.Create; 
    try 
     Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True); 
     Reg.WriteString('Program name',ParamStr(0)); 
    finally 
    Reg.Free; 
    end; 

end; 

tun oder diese:

using Microsoft.Win32; 
private void AddStartUpKey(string _name, string _path) { 
    RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true); 
    key.SetValue(_name, _path); 
} 
private void RemoveStartUpKey(string _name) { 
    RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true); 
    key.DeleteValue(_name, false); 
} 
+4

Anstatt nur einen Codeblock zu veröffentlichen, bitte * erklären *, warum dieser Code das Problem löst. Ohne eine Erklärung ist dies keine Antwort. –

+0

Auch sind keine von diesen C++. – immibis

Verwandte Themen