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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 26
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
Rejoignez-nous