Interagir avec mon services Windows

bat2 Messages postés 2 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 5 octobre 2007 - 5 oct. 2007 à 12:54
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 7 oct. 2007 à 00:18
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

bat2 Messages postés 2 Date d'inscription vendredi 28 septembre 2007 Statut Membre Dernière intervention 5 octobre 2007
5 oct. 2007 à 13:16
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!
0
chlelong Messages postés 6 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 16 juillet 2009
5 oct. 2007 à 13:58
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;
}
}
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
7 oct. 2007 à 00:18
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
*/
0