|
Continuing in the series of writing some diagnostics tools
and exploring System.Diagnostics
namespace, this article shows how do you find out what all system services are
running on the system and most importantly finding their dependencies. It’s the
later part that I found very interesting. Every time I open the Services dialog
box or Task Manager on my system to look what all services are running, I used
to think what will happen if I shut down one of them to recover some resources.
But then you have to think, what if this service is part of some other service
or application running on the system. This utility application enumerates and
displays all the system services running on a system. And it also lists all the
services a particular service is dependent upon and the services that depend on
this service.
.NET SDK provides System.ServiceProcess
namespace. This
namespace provides classes for installing and running system services. Under
this namespace, you will find a class names SystemController
. A SystemController
is nothing but a System Service in NT lingo. This class has a static method GetServices
that returns an array of SystemController
objects. This array contains all the services running on a system.
ServiceController [] controllers =
ServiceController.GetServices ();
After you have
obtained this array, enumerate through each element to get details about each
service. The SystemController
class has a bunch of properties and their
names are self-explanatory. I will not go into details of each property. I
would suggest you to look in SDK documentation for more details.
DisplayName
The descriptive name shown for this
service in the Service applet.Status
Status
of the service e.g., Running, Stopped, etc.ServiceType
Type of service that object
references.ServiceName
Short name of the service.CanStop
Indicates
if the service can be stopped at any time.CanShutDown
Indicates if the service can be shut
down any time.CanPauseAndContinue
If
the service can be stopped and continued.DependentServices
List of services that depend on this
service.ServicesDependOn
List of services that
this service depends on.
ServiceController
class supports couple of methods that can be used to start and stop a service.
I have not shown the use of these methods in this utility project. But they are
pretty simple to use.
Look at InitList
method in the source code attached with
this article. This function shows how to use all the properties of SystemController
class.
// Check the status of this
service that it can be stopped or not.
bool bCanStop =
controllers[i].CanStop;
item.SetSubItem (3, bCanStop
? "Yes" : "No");
// Check if the service
recieves notification when system shuts down.
bool bCanShutDown =
controllers[i].CanShutdown;
item.SetSubItem (4, bCanShutDown
? "Yes" : "No");
// Check the status if the
service can be paused and contiued.
bool bPauseNContinue =
controllers[i].CanPauseAndContinue;
item.SetSubItem
(5, bPauseNContinue ? "Yes" : "No");
Premium Sponsor |
|
Home >>
.NET >>
Unedited Reader Contributions
Advertise on The Code Project |
Article content copyright Naveen K Kohli, 2001 everything else © CodeProject, 1999-2001. |
DevelopersDex • DevGuru • Programmers Heaven • Tek-Tips Forums • TopXML • VisualBuilder.com • W3Schools • XMLPitstop • ZVON • Search all Partners |