Interagir avec mon services Windows

Signaler
Messages postés
2
Date d'inscription
vendredi 28 septembre 2007
Statut
Membre
Dernière intervention
5 octobre 2007
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Salut!
jai créer un service sur .Net avec C#.
Le service est lancé avec le compte System Local
donc il a tout les droits.
Cependant lorsque je veux lancer un .EXE à partir du service il ne se passe rien du moins on voit le processus qui est lancé dans le gestionnaire de tâhe mais la fenetre de l'.EXE que j'ai lancé n'apparait pas.

Si vous avez déjà rencontré ce genre de problème ou si vous avez une solution, merci d'avance de me la communiquer.

3 réponses

Messages postés
2
Date d'inscription
vendredi 28 septembre 2007
Statut
Membre
Dernière intervention
5 octobre 2007

Encore Moi
J'ai trouvé la solution javascript:Insert_Emoticon('/imgs2/smile_big.gif');en fait il fallait juste cocher une option:
1. ouvir le gestionnaire de service
2. MonService clique droit >Propriété
3. Puis cocher: autoriser le service à interargir avec le bureau.

Bon comme celui ci est résolu je reformule alors mon problème serait-il possible de le faire à partir du code.
thanks!
Messages postés
6
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
16 juillet 2009

Salut,

Voilà un code qui n'est pas de moi (je ne sais plus où je l'ai récupéré) mais qui marche très bien : une classe pour activer l'option "Autoriser le service à interagir avec le bureau"
qui doit être appelée dans l'événement Commited de ton ServiceInstaller :

private void ServiceInstaller_Committed(object sender, InstallEventArgs args)
{
ServiceController service = new ServiceController("Nom du service");
ServiceOptions.InteractWithDesktop(service, true);
}


public class ServiceOptions
{
public static string InteractWithDesktop(System.ServiceProcess.ServiceController serviceController, bool startService)
{
string returnValue = string.Empty;

try
{
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new ManagementScope("root\\CIMV2", coOptions);
mgmtScope.Connect();

ManagementObject wmiService = null;
wmiService = new ManagementObject("Win32_Service.Name='" + serviceController.ServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);

if (startService) serviceController.Start();
}
catch (Exception ex)
{
returnValue = ex.Message;
}

return returnValue;
}
}
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

L'utilisation de l'interaction avec le bureau n'est pas une bonne idée.
Elle posait déjà quelques problèmes, et avec l'arrivée de l'isolation de la session 0 sous Vista et sup, elle est devenue inutilisable.

/*
coq
MVP Visual C#
CoqBlog
*/