HKEY_CURRENT_USER\...\Run

StonedNerd

Grünschnabel
Moin moin!
Mal wieder hab ich ein Problem:
Ich bin dabei ein MailWatcher zuschreiben, der je nach Wunsch des Benutzers schon beim Starten von Windows mitstartet. Gefunden hab ich dazu den RegKey: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
In diesem Key hab ich nun mein Programm mit dem Aufrufpfad verewigt, aber wenn ich meinen Rechner neustarte, passiert nix. Kann es sein, dass dieser Schluessel allein nix macht?!
Ich sag schon mal "Danke" fuer jede Antwort :)
 
Ähm, wenn du einen Schlüssel anlegst, hat dies keine Folge.
Du musst eine neue zeichenfolge reinmachen:
Name: Egal
Wert: Absoluter Pfad der auszuführenden Datei

Ausserdem solltest du es nicht in HKEY_CURRENT_USER reinmachen, sondernin HKEY_LOCAL_MACHINE.

Gehört eigentlich ins Windows Forum :)
 
Ich hab ja auch eine Zeichenfolge erstellt, nur irgendwie klappt's nich! Die Idee mit HKEY_LOCAL_MACHINE hatte ich auch schon, aber das macht er auch net!
Ich mach das uebrigens mit dieser Zeile code:
RegSetValueEx(hkeyRun, szWndTitle, NULL, REG_SZ, GetCommandLine(), strlen(GetCommandLine()) );
Also ein falscher Programmname kann es nicht sein!

>Gehört eigentlich ins Windows Forum
Hast eigentlich recht, aber andererseits programmier ich das ja. :/
 
Haste mal mit Regedit nachgeschaut ob die Zeichenfolge richtig
angelegt wurde?
Kannste ja mit den anderen vergleichen!
 
Also die Autostart-Einträge sind in:
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
dort eingetragen als:
Code:
"myprogram"="C:\WINDOWS\System32\myprog.exe"

Würde mal kontrollieren, ob es so von Deinem Programm in der Registry eingetragen wird.
Vielleicht solltest Du testweise mal einen solchen Eintrag manuell machen um zu schauen, ob das Programm korrekt gestartet wird.
 
Hallo,
das Problem ist folgendes:
"myprogram"="C:\WINDOWS\System32\myprog.exe"
Die Registrie möchte den Eintrag ohne Anführungsstriche.
Teste das mal
 
StonedNerd hat gesagt.:
Ich mach das uebrigens mit dieser Zeile code:
Code:
RegSetValueEx(hkeyRun, szWndTitle, NULL, REG_SZ, GetCommandLine(), strlen(GetCommandLine()) );

Also ein falscher Programmname kann es nicht sein!

RegSetValueEx verlangt bei REG_SZ, dass der letzte Parameter die Länge des Strings einschließlich des \0 - Zeichens ist.
Außerdem: du hast hKeyRun hoffentlich mit nötigen Schreibrechten geöffnet?
+GetCommandLine liefert dir nicht zwangsläufig den Pfad zu deiner Executable (kann auch ein relativer Pfad sein, wenn du zB über die console startest), außerdem sind dann noch Programmargumente dabei.
Besser wäre:
Code:
char path[MAX_PATH];
GetModuleFileName(false,path,MAX_PATH);
RegSetValueEx(hkeyRun, szWndTitle, false, REG_SZ, path, strlen(path)+1 );
 
NinjaOne hat gesagt.:
Hallo,
das Problem ist folgendes:
"myprogram"="C:\WINDOWS\System32\myprog.exe"
Die Registrie möchte den Eintrag ohne Anführungsstriche.
Teste das mal

Achwas - mit Anführungsstrichen ist sogar besser, dass keine Missverständnisse auftreten können (falls Leerzeichen im Dateipfad enthalten sind)!
 
Hab die Erfahrung gemacht, daß es mit Anführungsstrichen nicht geht!
Hab sie rausgenommen und es ging.
Code auf Windows XP, mehr kann ich dazu nicht sagen !
 
Mm... ah.. also auf 2k is auf jeden Fall mit besser und müsste eigenlich auch auf XP so sein... (weil die Dinger au Sinn machen!). Un in irgenwelchen Msdn-Artikeln is mir dazu auch noch nie eine Sonderregelung für XP aufgefallen...
Probiers nommel aus..
 
Zurück