Lancer une appli par un service windows

Résolu
jayjay9531
Messages postés
18
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
22 février 2008
- 25 sept. 2006 à 11:11
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
- 26 sept. 2006 à 21:11
Bonjour,

J'ai un petit problème avec le service windows que j'ai créé. Il fonctionne bien mais j'ai besoin qu'il lance une applcation, j'utilise :

#include <windows.h>
#include <shellapi.h> 
  
 HWND hwnd; 
  
 int rc = (int) ShellExecute(hwnd,"open","C:\\Windows\\system32\\calc.exe",NULL,NULL,SW_SHOWNORMAL);

le service est actif et il lance calc.exe (visible dans le gestionnaire des taches), mais sous l'utilisateur system, du coup le programme ne se lance pas. Quelqu'un aurait-il une solution ?

11 réponses

BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
25 sept. 2006 à 13:45
Allez lire dans MSDN les différents mode de lancement de service et donc le mode d'interaction desktop.

ciao...
BruNews, MVP VC++
3
DeAtHCrAsH
Messages postés
2670
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013

25 sept. 2006 à 11:17
Qu'est ce que tu entends par utilisateur system ?

Shell
0
jayjay9531
Messages postés
18
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
22 février 2008

25 sept. 2006 à 11:19
dans le gestionnaire des taches dans la colonne "nom de l'utilisateur" en face de calc.exe j'ai "SYSTEM"
0
jayjay9531
Messages postés
18
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
22 février 2008

25 sept. 2006 à 12:09
Le service windows est installé sous el compte system. Du coup la commande shellexecute lance les fichiers pour l'utilisateur system. Le gestionnaire des taches les liste mais ils ne se lancent pas dans windows.
0

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

Posez votre question
DeAtHCrAsH
Messages postés
2670
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013

25 sept. 2006 à 12:09
Le système est lancé au démarrage de Windows. Il va donc de soit que l'utilisateurs soit SYSTEM.
Pour lancer l'appli essaye plutot ca :

ShellExecute(NULL,"open","C:\\Windows\\system32\\calc.exe",NULL,NULL,SW_SHOWNORMAL);

Shell
0
jayjay9531
Messages postés
18
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
22 février 2008

25 sept. 2006 à 12:14
J'ai testé ce changement, mais ca ne change rien, toujours calc.exe qui apparait dans le gestionnaire des taches, mais pas la moidre calculatrice qui se lance. D'ailleurs je précise que le problème est le même : quelque soit l'exe, pour les fichiers également et meme pour un .bat qui lance une appli normalement sous windows mais pas avec le service.
0
DeAtHCrAsH
Messages postés
2670
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013

25 sept. 2006 à 14:22
BruNews> url ? Je t'avoue que les services sont une inconnue pour moi, tout du moins je ne me suis limité qu'a en créer tout simplement.

Shell
0
jayjay9531
Messages postés
18
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
22 février 2008

25 sept. 2006 à 16:39
Ok, c'était en effet un problème d'intéraction avec le bureau.


Il fallait cocher la case "autoriser le service à intergagir avec le bureau" dans les propriétés du service.


Reste à trouver comment cocher cette case à l'install du service.


Je lance un nouveau topic pour cette question car je ne trouve pas, après avoir essayer tous les modes d'installations dispo !!
0
jayjay9531
Messages postés
18
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
22 février 2008

25 sept. 2006 à 16:40
Merci a deathcrash et à brunews pour leur aide :-)
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
25 sept. 2006 à 18:19
Ajoute flag SERVICE_INTERACTIVE_PROCESS au 5eme param de CreateService().

ciao...
BruNews, MVP VC++
0
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
26 sept. 2006 à 21:11
oui pour SERVICE_INTERACTIVE_PROCESS et tu peux aussi essayer ou les fonctions _exec() _execlp() ou lancer un nouveau thread en prenant le GetThreadDesktop() comme thread appelant.
Je n'ai pas essayé mais c'est à voir.
0