Comment puis-je arrêter par programmation/démarrer le service windows sur un boîtier déporté?
Je veux écrire une console ou Cliquez une Fois WinForms application qui va l'arrêter par programmation et/ou de démarrer un service de windows sur un boîtier déporté.
Les deux zones sont en cours d'exécution .NET 3.5 - quoi .NET de l'API sont disponibles pour accomplir cette?
Vous devez vous connecter pour publier un commentaire.
en C#:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.ServiceProcess.dll Additional information: Cannot open Service Control Manager on computer <IP address>. This operation might require other privileges.
Vous pouvez également le faire à partir d'une console de commande à l'aide de la
sc
commande:Utilisation
pour obtenir une liste de noms de service.
L'option
<server>
a la forme\\ServerName
Exemple
sc \\MyServer stop schedule
va arrêter le service du Planificateur.ServiceController.
Vous devez avoir la permission d'administrer les services de la télécommande de la boîte.
Comme Mehrdad dit, vous pouvez également utiliser WMI. Les deux méthodes de travail pour démarrer et d'arrêter, mais WMI nécessite plus de codage et vous donnera plus de l'accès à d'autres ressources
Si vous ne voulez pas de code vous-même, PsService par Microsoft/Sysinternals est un outil de ligne de commande qui fait ce que vous voulez.
Vous pouvez utiliser
System.Management
Api (WMI) pour les services de contrôle à distance. WMI est l'API générique pour effectuer des tâches d'administration.Pour ce problème, cependant, je vous suggère d'utiliser le plus facile à utiliser
System.ServiceProcess.ServiceController
classe.si vous avez besoin d'obtenir le nom du Service:
exécuter à partir de la ligne de commande:
sc query
Vous verrez par exemple que SQL Server est le nom de service est 'MSSQL$SQLEXPRESS'.
Donc, pour arrêter le service SQL Server en C#:
galets extrait de code ci-dessus est un excellent point de départ. Cependant, gardez à l'esprit qu'il suppose que le service a déjà commencé, ou, plus important encore, que
Aussi, il peut le plus important, à un certain moment au cours de l'exécution d'un code d'appel
parce que les valeurs des propriétés (comme ServiceControllerStatus) peuvent ne pas refléter les propriétés du service.
Par exemple, vous pouvez appeler
et d'attendre indéfiniment lorsque cette commande exécute
Ici est une version de ce code que j'ai codé avec ces considérations à l'esprit.
J'ai fait comme ci-dessous:
Remarque:
Dans
Web.Config
sous<configuration>
Dans Ma Classe De Service:
Espère que cette Aide.
Ici est un ServiceExtension que pouvez Démarrer et Arrêter les Services sur des ordinateurs distants.
Et il peut définir le type de Démarrage du service, même à "automatique (retardé)"
version modifiée de cette Réponse de travailler sur des machines distantes.
Vous pouvez démarrer un service comme celui
serviceName = "nom du service"
machineName = "le nom de l'ordinateur distant/local host"
Vous pouvez arrêter ce service
Pour accorder à un utilisateur des droits pour démarrer et arrêter un service sur un ordinateur distant, vous devez définir certains droits de service, vous pouvez vous google ce qui subinacl.exe est et où le télécharger.