Je souhaite interroger une liste de services s'exécutant en tant qu'utilisateur spécifique sur une machine distante, puis vérifier leur état de santé. Je construis une console personnalisée.En C#, comment puis-je interroger la liste des services en cours d'exécution sur un serveur Windows?
En C#, comment puis-je interroger la liste des services en cours d'exécution sur un serveur Windows?
Répondre
Pour utiliser la méthode ServiceController je vérifierais la solution avec usurpation d'identité mis en œuvre dans cette question précédente: .Net 2.0 ServiceController.GetServices()
FWIW, voici C#/chemin WMI avec l'hôte explicite, nom d'utilisateur, mot de passe:
using System.Management;
static void EnumServices(string host, string username, string password)
{
string ns = @"root\cimv2";
string query = "select * from Win32_Service";
ConnectionOptions options = new ConnectionOptions();
if (!string.IsNullOrEmpty(username))
{
options.Username = username;
options.Password = password;
}
ManagementScope scope =
new ManagementScope(string.Format(@"\\{0}\{1}", host, ns), options);
scope.Connect();
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, new ObjectQuery(query));
ManagementObjectCollection retObjectCollection = searcher.Get();
foreach (ManagementObject mo in retObjectCollection)
{
Console.WriteLine(mo.GetText(TextFormat.Mof));
}
}
Vous pouvez utiliser wmi pour cela (System.Management). Vous pouvez également utiliser ServiceController.GetServices().
ServiceController.GetServices ("nom_machine") renvoie un tableau d'objets ServiceController pour une machine particulière.
Ce:
namespace AtYourService
{
using System;
using System.ServiceProcess;
class Program
{
static void Main(string[] args)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController service in services)
{
Console.WriteLine(
"The {0} service is currently {1}.",
service.DisplayName,
service.Status);
}
Console.Read();
}
}
}
produit:
Le service d'expérience de l'application est en cours d'exécution .
Le service de service de filtres Andrea ST est en cours d'exécution.
Le service Application Layer Gateway Service est actuellement arrêté. Le service d'information d'application est actuellement en cours d'exécution.
etc ...
Bien sûr, j'utilisé la version parameterless pour obtenir les services sur ma machine.
Cela vérifiera le nom du service de votre système avec votre nom de service souhaité que vous pouvez mentionner le paramètre
namespace ServiceName
{
using System;
using System.ServiceProcess;
class Service
{
public static bool IsServiceInstalled(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController service in services)
{
if (service.ServiceName == serviceName)
return true;
}
return false;
}
}
}
- 1. en cours d'exécution aspnet_setreg.exe sur un serveur Windows 2008
- 2. Livres et didacticiels sur Windows Services en C#?
- 3. Liste des processus en cours d'exécution
- 4. Comment interroger datetime en fonction de la date dans C#
- 5. Comment enseigner un cours intensif sur C++?
- 6. Comment réaffecter des raccourcis Windows en C#?
- 7. compilateur en cours d'exécution sur un réseau
- 8. Comment obtenir la liste des applications en cours d'exécution à l'aide de PowerShell ou VBScript
- 9. L'Ordre des Assemblées en cours de chargement
- 10. Comment vérifier si un fichier existe sur un serveur en utilisant C# et la classe WebClient
- 11. Existe-t-il un moyen de lister les processus en cours en utilisant Qt sur Windows?
- 12. Comment construire un serveur DNS simple personnalisé en C/C++
- 13. Obtenez une liste des fenêtres en cours, et donnez-en un focus, dans .Net
- 14. Obtention d'une liste des flux de travail en cours d'exécution?
- 15. Comment vérifier si je cours sous Windows en Python?
- 16. Comment me connecter à un serveur Telnet en C#?
- 17. Privilèges de suppression en C++ sur Windows
- 18. Obtenez l'utilisation du processeur en cours de processus en C
- 19. Comment ouvrir un projet différent du projet en cours en utilisant des threads ou des processus en C#.?
- 20. En utilisant VB6, comment obtenir l'utilisateur et le domaine en cours sur Windows XP?
- 21. Méthodes d'authentification sur un serveur Windows en C# pour une application cliente
- 22. Comment puis-je interroger le nom de l'instance de base de données SQL Server en cours?
- 23. ASP.NET vérifie l'état des threads sur un thread en cours d'exécution?
- 24. en cours d'exécution fichier bat en utilisant Windows Scheduler
- 25. Comment mettre en surbrillance un lien basé sur la page en cours?
- 26. Comment déployer sur un seul serveur spécifique en utilisant Capistrano
- 27. Vérifiez l'état des services qui s'exécutent sur un ordinateur distant en utilisant C#
- 28. La détection d'un processus est déjà en cours d'exécution dans Windows à l'aide de C# .net
- 29. ruby en cours d'exécution en tant que programme exe Windows
- 30. programmes en cours d'exécution en parallèle, lecture/écriture en C
Merci. Toutes les réponses m'ont aidé à me diriger vers WMI et System.Management. J'ai aimé la requête et j'ai utilisé cet extrait. thx à nouveau. -k2 – kkelly18
@AK_ Pourquoi avez-vous annulé ma modification? – Dan
@Dan désolé, j'ai roulé dans le mauvais onglet ... réparé ... –