Le lancement de GUI Application de Service Windows - Fenêtre Ne s'affiche Pas
J'ai écrit un simple service windows qui va lancer un exe spécifié dans le
onstart()
méthode du service. Après le démarrage du service de l'exe, s'est lancé il ne
présente dans la mémoire, mais il ne marche pas afficher dans l'explorateur.
Je suis en train de lancer un calc.exe
de mon code.il montre l'exe dans le mémoire, mais il
ne vient à mon avis, (je.e) dans l'explorateur.
Ci-dessous mon code pour lancer l'exe dans le onStart() la méthode
Process pr=new Process();
pr.StartInfo.FileName="calc.exe";
pr.StartInfo.WindowStyle=ProcessWindowStyle.Maximized;
pr.StartInfo.CreateNoWindow=false;
pr.Start();
// pr.WaitForExit();
- Qu'attendez-vous? Essayez d'exécuter un fichier de commandes à la place.
- Ce type de fichier exe êtes-vous essayer de lancer ?
- Veuillez reformuler votre question à quelque chose de plus significatif. Cela ne veut pas dire beaucoup de choses lorsque vous allez à travers une liste de questions...
Vous devez vous connecter pour publier un commentaire.
Les Services s'exécutent dans une autre session sous Vista ou version ultérieure et les applications lancées directement depuis les services sont lancés dans la même session par défaut. Démarrage des applications dans d'autres sessions est possible, vous devez trouver l'id de la session de l'utilisateur et de l'utilisation CreateProcessAsUser.
Si plus d'un utilisateur est connecté et que vous avez besoin pour démarrer votre programme pour tous les utilisateurs, vous devez trouver les id de toutes les sessions.
Voici un exemple de code:
Services sont exécutés sous différents privilèges de compte (Local/NetworkService etc)et donc ils n'ont pas accès à votre ordinateur de bureau (sous votre compte de connexion du contrôle).
Services sont destinés à faire leur travail en silence et c'est ce qu'ils doivent faire. (à l'exception de l'exploitation forestière quelque chose dans le journal des événements de windows quand ils ont quelque chose d'important à dire)
Si vous ouvrez votre service propriétés de la fenêtre, allez dans l'onglet connexion puis cochez la case "Autoriser le service à interagir avec le bureau" case à cocher, vous obtiendrez le comportement que vous souhaitez. Aussi en fonction de ce que l'application que vous ce que vous pouvez avoir besoin de modifier le compte de connexion.
Services ne sont pas interactives, par définition, de sorte que vous ne devriez pas s'attendre à des éléments d'interface utilisateur pour afficher lorsque vous lancez une application à partir d'un service.
C'est par la conception...
Comme déjà mentionné, d'autres un service windows est "normalement" exécute sous un compte séparé ("LocalSystem" ou "service réseau"). C'est la raison pour laquelle vous pourriez pas voir l'INTERFACE du programme a commencé par votre service. Aussi les services ne sont pas destinés à avoir une INTERFACE utilisateur, ils agissent comme un service d'arrière-plan.
Mais également à noter qu'à partir d'une application par un service peut être un risque de sécurité élevé, parce que l'application est en cours d'exécution avec les mêmes privilèges que votre service est. Normalement, ce serait le compte système local.
Je ne sais pas ce que vous essayez d'atteindre avec votre service, mais pensez à utiliser la fonction de démarrage automatique de windows au lieu d'un service pour exécuter votre application.