Lancement de mon programme au demarrage de windows (XP)

Signaler
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005
-
Messages postés
216
Date d'inscription
samedi 11 août 2007
Statut
Membre
Dernière intervention
30 mai 2011
-
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

Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

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.
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

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 ? :)
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

Une precision : SREGKEY_LAUNCH_NAME : c'est un define dans mon .h qui contient par exmeple "toto".
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
REG_SZ pour la cle run

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
ah oui et KEY_QUERY_VALUE pour ecrire c'est pas l'idéal.

ciao...
BruNews, MVP VC++
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

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 ?
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

J'ai trouve le soucis :

Il ne faut pas mettre le \\ devant SOFTWARE.
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

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) ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
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++
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

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.
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

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.
Messages postés
20
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
4 juillet 2005

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 ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

ciao...
BruNews, MVP VC++
Messages postés
216
Date d'inscription
samedi 11 août 2007
Statut
Membre
Dernière intervention
30 mai 2011

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?