cloud8716
Messages postés1Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention 8 juin 2006
-
8 juin 2006 à 08:51
othmane1950
Messages postés33Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 7 octobre 2010
-
10 août 2010 à 20:32
Bonjour,
Je suis debutant en C# et je dois faire un programme qui permet de lister, demarrer et arreter des services sur une machine distante.
Pour ce qui est de lister les services ca marche bien, mais impossible de lancer ou arreter un service, j'ai une erreur de type InvalidOperationException
Voila mon code :
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceProcess;
othmane1950
Messages postés33Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 7 octobre 2010 29 juil. 2010 à 18:09
Bonjour
C’est un peut tard pour te répondre mais ben je laisse le commentaire pour d'autre gens si ça leur intéressent :
En premier lieu il faut ajouter le namspace System.ServiceProcess si jamais le .Net donne une erreur sur ça comme quoi il ne le reconnait pas (il faut allez sur référence clic droit de la souris ajout d'une référence ==> ça donne une fenêtre clic sur l'onglet .NET il faut choisir dans la liste System.ServiceProcess tu sélectionne et tu clic sur le bouton ok)
En deuxième lieu pour l'erreur InvalidOperationException avant tout il faut placer la ligne console.read après le catch et après il faut tester sur les 3 choses qui peuvent lever une exception et qui sont :
Le service n'existe pas.
Le service est arrêté alors qu'on veut l'arrêter.
Le service est démarré alors qu'on veut démarrer.
et ceci on étulisant ServiceControllerStatus.[Running | Stopped]
=> pour vérifier s'il existe il faut utiliser la boucle for que t'as mis en premier lieu mais pour qu'elle marche il faut la placer après la déclaration du service à arrêter ou démarre...
foreach (ServiceController service in ServiceController.GetServices())
{
Console.WriteLine(service.ServiceName + ":" + service.DisplayName + ":" + service.Status);
if (test.ServiceName==service.ServiceName)
{
Console.WriteLine("exist");
}
}
Ce que moi je veux faire c'est arrêter des services d'une machine à distance qui se troue dans le même réseau.
si vous avez la réponse veuillez me la communiquer merci.
mon Email : the_blues_man@live.fr
othmane1950
Messages postés33Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 7 octobre 2010 4 août 2010 à 19:01
j'ai trouvé pour arrêter les services d'une machine distante (dans un réseau local)... il suffit juste de spécifier le nom de la machine ou son adresse ip
aussi il faut avoir les droits d'accès sur cette machine pour que vous puissiez accéder a ces services
donc on aurra quelque chose du genre :
For Each Service As ServiceController In ServiceController.GetServices("Nom_Machine/IP")
'On test si un service spécifique existe dans la machine cible
If (Service.DisplayName() = "Nom_Service_Spécifique") Then
'On test si le service spécifier est on état de démarrage
If Service.Status = ServiceControllerStatus.Running Then
'si le service est démarrer on fait notre traitement ex l'arrêter...
Service.Stop()
End If
Exit For
J'espère que ce code aidera quelqu'un.
Bien à vous.
Ro_Ot-m@n
End If
Next
othmane1950
Messages postés33Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 7 octobre 2010 10 août 2010 à 20:32
Un petit plus...
si le serveur n'appartient au même domaine que celui ou l'application tourne...
vous aurez une erreur du genre 'privilège...'
pour ne pas tomber dans ce problème il suffit dans lancer la cmd suivante
net use \\IP_Ou_Nom_Serveur /USER:Administrateur_de_la_machine mot_de_passe