Lancement de mon programme au demarrage de windows (XP)

WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005 - 9 févr. 2005 à 10:20
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011 - 9 janv. 2008 à 23:08
Bonjour,

Je developpe actuellement un programme que je souhaiterais lancer a chaque demarrage de Windows XP, en evitant la technique basique du dossier "Demarrer", mais en utilisant plutot une cle de registre


SYSTEM\CurrentControlSet\Services\MonService

lance par SVCHOST.

Je ne sais pas trop comment faire, je me tourne vers vous.

J'ai deja cree ma cle dans SYSTEM\CurrentControlSet\Services\MonService
Que dois-je fais maintenant pour que windows le lance au demarrage pour chaque utilisateur ?

Merci !

14 réponses

yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
9 févr. 2005 à 10:48
Le plus simple est de rajouter une nouvelle valeur ds la clef
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Si non pour créer un service windows c'st un peu plus compliquer qu'une simpble clef ds la base de registre. Ton programme doit respecter une structure spécifique pour être un service. Voir mon code : http://www.cppfrance.com/code.aspx?ID=27660
Le code est très facilement réutilisable.

Bon courage.
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
9 févr. 2005 à 11:13
Merci !

J'ai un dernier soucis. Je n'arrive pas a recuperer un handle sur la cle pour ensuite faire un ajout dedans, voici mon code :


HKEY hKey;

string strSubKey = "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

LONG iSuccess = RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCSTR)strSubKey.c_str(), 0, KEY_QUERY_VALUE, &hKey);

if (iSuccess == ERROR_SUCCESS)
{
RegSetValueEx (hKey, SREGKEY_LAUNCH_NAME, 0L, REG_EXPAND_SZ, (LPBYTE)"soft.exe", 8);
}

Il ne rentre jamais dans le IF.

Une idee ? :)
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
9 févr. 2005 à 11:15
Une precision : SREGKEY_LAUNCH_NAME : c'est un define dans mon .h qui contient par exmeple "toto".
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 févr. 2005 à 12:19
REG_SZ pour la cle run

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 févr. 2005 à 12:20
ah oui et KEY_QUERY_VALUE pour ecrire c'est pas l'idéal.

ciao...
BruNews, MVP VC++
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
9 févr. 2005 à 12:49
Le soucis vient surtout de :


LONG iSuccess = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, &hKey);

car mon iSuccess est different de ERROR_SUCCESS (donc le open n'a pas marche).
Mon hKey est vide.

Que faire ?
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
9 févr. 2005 à 12:53
J'ai trouve le soucis :

Il ne faut pas mettre le \\ devant SOFTWARE.
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
9 févr. 2005 à 21:36
Malheureusement, mon programme ne se lance que pour un utilisateur dans son environnement donner.

Où dois je mettre ma clé pour que le lancement de cette application soit globale à tous les utilisateurs de ce windows (qui ont donc des sessions différentes) ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 févr. 2005 à 00:17
Faut faire un service système mais c'est contraignant, pas d'interaction directe avec utilisateur depuis le thread principal du service.

ciao...
BruNews, MVP VC++
0
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
10 févr. 2005 à 05:36
WiShYs si tu lance le programme depuis la clef run de HLM, ton prog se lancera à chaque ouverture de session. Il se lancera pour toutes les sessions, bien sur il ne se lancera pas avt l'ouverture de session mais qui que se soit qui ouvre une session il verra ce prog se lancer.
L'avantage du sevice windows, c'est qu'il se lancera avt meme l'ouverture de session, mais vu les contrainte lié à la programmation d'un service...
Bon courrage.
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
10 févr. 2005 à 11:07
Yserver : Ou puis je trouver la cle Run de HLM ? (Son chemin complet dans regedit ?)

Concernant le service, je pense m'y pencher, mais plus tard. Merci !

Merci aussi a Brunews de ton aide.
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
10 févr. 2005 à 11:12
HLM = HKEY_LOCAL_MACHINE ?

En mettant dans HLM dans [file://\\Microsoft\\Windows\\CurrentVersion\\Run SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run] , le lancement ne s'effectue pas pour tous les utilisateurs ... bizzare ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 févr. 2005 à 11:12
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

ciao...
BruNews, MVP VC++
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
9 janv. 2008 à 23:08
bonjour
moi j'ais un petit soussi
quand je tape HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
dans recherche de windows il ne trouve rein (j'ais vista),
avec vista la clèf est-elle pas la même que les autres?
0
Rejoignez-nous