IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Lancer un .exe depuis un service windows. [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Par défaut Lancer un .exe depuis un service windows.
    Bonjour,

    Je viens vers vous car j'ai un problème de compréhension sur un problème.
    Pour prendre depuis le début :

    J'ai essayé d'ouvrir un document à l'aide de ce bout de code depuis mon service Windows. (en testant différente property).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ProcessStartInfo MyInfo = new ProcessStartInfo();
    if (File.Exists(PathFile) == false) { File.Create(PathFile); }
    MyInfo.Arguments = PathFile;
    MyInfo.FileName = @"C:\Program Files\Windows Journal\Journal.exe"; // chemin entier de l'.exe
    MyInfo.WorkingDirectory = @"C:\Program Files\Windows Journal"; //répertoire ou est stocké l'.exe
    MyInfo.UseShellExecute = false;
    MyInfo.RedirectStandardError = true;
    MyInfo.RedirectStandardInput = true;
    MyInfo.RedirectStandardOutput = true;
    MyInfo.CreateNoWindow = true;
    MyInfo.ErrorDialog = false;
    MyInfo.WindowStyle = ProcessWindowStyle.Hidden;
    Process.Start(MyInfo);
    Pour finalement me rendre compte après de nombreuse recherches, que cela était tout simplement impossible.
    Il existe visiblement plusieurs solutions mais je n'ai pas bien compris comment m'y prendre.

    Appeler une application console dans mon service windows qui lancera l'.exe.
    Ou
    Récupérer le process de la session et m'en servir pour lancer mon .exe.

    Donc pour poser une question (on y viens ..), j'aimerais savoir qu'elle solution est la plus adaptée, et si par chance vous aviez des liens vers lesquels me rediriger.

    P.S : mon service Windows contient WCF.

    Merci, A+

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Tu met ton service Vide, et tu rajoute juste l’exécution du ton exe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                System.Diagnostics.ProcessStartInfo myInfo = 
                new System.Diagnostics.ProcessStartInfo();
                myInfo.FileName = "MonAppli.exe";
                myInfo.WorkingDirectory = "MonRepertoire";
                System.Diagnostics.Process.Start(myInfo);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Par défaut
    Bonjour,

    Je mets mon service "Vide" ?

    J'ai essayé de lancer une appli console qui lance un exe, mais le problème est le même.
    Mon IdSession est toujours le 0. Résultat l'exe se lance mais ne s'affiche pas à l'écran.

  4. #4
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Tu a un problème dans cette propriété :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyInfo.FileName = @"C:\Program Files\Windows Journal\Journal.exe"; // chemin entier de l'.exe
    Tu doit la mettre comme ça
    tu met juste le nom d'exe:
    Comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyInfo.FileName = "Journal.exe"; // chemin entier de l'.exe

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    sur windows plusieurs sessions peuvent être ouvertes en même temps, sur les os serveurs plusieurs sessions peuvent même être utilisées en même temps
    aussi un service ne peut rien faire visuellement, sur quelle session le ferait il ?

    pour pallier à ca ce qui est fait couramment c'est une appli windows forms (ou autre) qui se lance à l'ouverture de session et qui se place dans le system tray (voir notifyicon)
    et cette application (qui peut donc avoir plusieurs instances si plusieurs sessions sont ouvertes) dialogue avec le service (par wcf par exemple si tu as déjà du wcf dedans)
    le service peut donc envoyer des informations de statut à la ou les applis windows forms qui pourront les afficher, et l'appli winforms peut demander des actions au service en réponse à l'utilisateur
    le service peut aussi envoyer une commande au winforms qu'il traduira en lancement d'application, qui sera donc visible (par contre ca se lancerait sur toutes les sessions si c'est à l'initiative du service et non à l'initiative de l'utilisateur ce qui te permettrait de localiser l'instance d'appli demandant quelque chose)
    après si tu es de n'avoir qu'une session ouverte à un instant T tu n'as peut etre pas cette problématique à gérer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Par défaut
    Bonjour,

    Merci à vous pour votre retour.

    J'avais finalement réglé le problème à l'aide de CreateProcessAsUser() en récupérant l'ID de la session utilisateur active.
    Ceci permetait donc de lancer mes différents .exe avec l'ID 1 et non 0 et par conséquent d'avoir un affichage.

    Cependant la solution n'était pas fonctionnel pour certain .exe sous une tablette en Windows 8.1..
    Peut être à cause des dll exploitées. J'avoue ne pas avoir poussé plus car nous sommes parties sur une autre façon de faire.

    Nous aurons finalement une autre appli qui tournera en tache de fond et n'aura pour but que ce travail.

    Merci.

    P.S : si besoin de lien concernant CreateProcessAsUser() ou autre, n'hésitez pas.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lancer Kitchen.bat depuis un service windows sous l'usager système
    Par Jean-Philippe Shields dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 22/06/2012, 17h20
  2. Problème python lancer un .exe dans son service windows python
    Par leyer dans le forum Général Python
    Réponses: 1
    Dernier message: 02/04/2010, 04h07
  3. Lancer un exe depuis une barre d'outils office
    Par murphy99 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 10/01/2006, 10h38
  4. [C#] Execution d'un fichier VBS depuis un service Windows
    Par 0r3L dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/11/2005, 22h58
  5. Lancer mon exe au démarage de Windows
    Par zejo63 dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 06/11/2005, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo