Want to know what Services or/and Processes are running currently on your PC? In one of my previous project I implemented small diagnostic utility which showed what processes and services are running on host box. Here is the example how to obtain this information.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
namespace ManagementInstrumentation
{
class Program
{
static void Main(string[] args)
{
ListServices();
Console.ReadLine();
ListProcesses();
Console.ReadLine();
}
private static void ListServices()
{
ManagementScope scope = newManagementScope();
System.Management.ObjectQuery query = new ObjectQuery("select * from Win32_Service");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach(ManagementBaseObject o in searcher.Get())
{
Console.WriteLine("Service {0} is started = {1}", o["Name"], o["Started"]);
foreach (var prop in o.Properties)
{
Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
}
}
}
private static void ListProcesses()
{
ManagementScope scope = new ManagementScope();
System.Management.ObjectQuery query = new ObjectQuery("select * from Win32_Process");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach (ManagementBaseObject o in searcher.Get())
{
Console.WriteLine("Properties for Process {0}", o["Name"]);
foreach (var prop in o.Properties)
{
Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
}
}
}
//In this method I want to list just running services
//I'm using LINQ query to select started services
private static void ListRunningServices()
{
ManagementScope scope = new ManagementScope();
System.Management.ObjectQuery query = new ObjectQuery("select * from Win32_Service");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
var services = searcher.Get();
var started = fromManagementBaseObject s in services
fromPropertyData p in s.Properties
where p.Name == "Started" && p.Value.ToString().ToLower() == "true"
select s;
foreach (var o in started)
{
Console.WriteLine("Service {0} is started ", o["Name"]);
}
}
}
}
//Happy Coding