Win32_Service class

The Win32_ServiceWMI class represents a service on a computer system running Windows.

The following syntax is simplified from Managed Object Format (MOF) code and includes all of the inherited properties. Properties and methods are in alphabetic order, not MOF order.

Syntax

[Provider("CIMWin32")]class Win32_Service : Win32_BaseService
{
  boolean  AcceptPause;
  boolean  AcceptStop;
  string   Caption;
  uint32   CheckPoint;
  string   CreationClassName;
  string   Description;
  boolean  DesktopInteract;
  string   DisplayName;
  string   ErrorControl;
  uint32   ExitCode;
  datetime InstallDate;
  string   Name;
  string   PathName;
  uint32   ProcessId;
  uint32   ServiceSpecificExitCode;
  string   ServiceType;
  boolean  Started;
  string   StartMode;
  string   StartName;
  string   State;
  string   Status;
  string   SystemCreationClassName;
  string   SystemName;
  uint32   TagId;
  uint32   WaitHint;
};

Members

The Win32_Service class has these types of members:

Methods

The Win32_Service class has these methods.

MethodDescription
Change

Modifies a service.

ChangeStartMode

Modifies the start mode of a service.

Create

Creates a new service.

Delete

Deletes an existing service.

GetSecurityDescriptor

Returns the security descriptor that controls access to the service. This method is available starting with Windows Vista.

Windows Server 2003:  This method is not available.

InterrogateService

Requests that a service update its state to the service manager.

PauseService

Attempts to place a service in the paused state.

ResumeService

Attempts to place a service in the resumed state.

SetSecurityDescriptor

Writes an updated version of the security descriptor that controls access to the service. This method is available starting with Windows Vista.

Windows Server 2003:  This method is not available.

StartService

Attempts to place a service into the startup state.

StopService

Places a service in the stopped state.

UserControlService

Attempts to send a user-defined control code to a service.

 

Properties

The Win32_Service class has these properties.

AcceptPause
Data type: boolean
Access type: Read-only

Indicates whether the service can be paused.

AcceptStop
Data type: boolean
Access type: Read-only

Indicates whether the service can be stopped.

Caption
Data type: string
Access type: Read-only

Short description of the service —a one-line string.

CheckPoint
Data type: uint32
Access type: Read-only

Value that the service increments periodically to report its progress during a long start, stop, pause, or continue operation. For example, the service increments this value as it completes each step of its initialization when it is starting up. The user interface program that invokes the operation on the service uses this value to track the progress of the service during a lengthy operation. This value is not valid and should be zero when the service does not have a start, stop, pause, or continue operation pending.

CreationClassName
Data type: string
Access type: Read-only
Qualifiers: MaxLen (256)

Name of the first concrete class to appear in the inheritance chain used in the creation of an instance. When used with the other key properties of the class, this property allows all instances of this class and its subclasses to be uniquely identified.

Description
Data type: string
Access type: Read-only

Description of the object.

DesktopInteract
Data type: boolean
Access type: Read-only

Indicates whether the service can create or communicate with windows on the desktop, and thus interact in some way with a user. Interactive services must run under the Local System account. Most services are not interactive; that is, they do not communicate with the user in any way.

DisplayName
Data type: string
Access type: Read-only

Name of the service as viewed in the Services snap-in. This string has a maximum length of 256 characters. Note that the display name and the service name (which is stored in the registry) are not always the same. For example, the DHCP Client service has the service name Dhcp but the display name DHCP Client. The name is case-preserved in the Service Control Manager. However, DisplayName comparisons are always case-insensitive.

Constraint: Accepts the same value as the Name property.

Example: "Atdisk"

ErrorControl
Data type: string
Access type: Read-only

Severity of the error if this service fails to start during startup. The value indicates the action taken by the startup program if failure occurs. All errors are logged by the computer system.

ValueMeaning
"Ignore"

User is not notified.

"Normal"

User is notified. Usually this will be a message box display notifying the user of the problem.

"Severe"

System is restarted with the last-known-good configuration.

"Critical"

System attempts to restart with a good configuration. If the service fails to start a second time, startup fails.

"Unknown"

Severity of the error is unknown.

 

ExitCode
Data type: uint32
Access type: Read-only

Windows error code that defines errors encountered in starting or stopping the service. This property is set to ERROR_SERVICE_SPECIFIC_ERROR (1066) when the error is unique to the service represented by this class, and information about the error is available in the ServiceSpecificExitCode property. The service sets this value to NO_ERROR when running, and again upon normal termination.

InstallDate
Data type: datetime
Access type: Read-only

Date object is installed. This property does not require a value to indicate that the object is installed.

Name
Data type: string
Access type: Read-only
Qualifiers: Key

Unique identifier of the service that provides an indication of the functionality that is managed. This functionality is described in the Description property of the object.

PathName
Data type: string
Access type: Read-only

Fully qualified path to the service binary file that implements the service.

Example: "\SystemRoot\System32\drivers\afd.sys"

ProcessId
Data type: uint32
Access type: Read-only

Process identifier of the service.

Example: 324

ServiceSpecificExitCode
Data type: uint32
Access type: Read-only

Service-specific error code for errors that occur while the service is either starting or stopping. The exit codes are defined by the service represented by this class. This value is only set when the ExitCode property value is ERROR_SERVICE_SPECIFIC_ERROR (1066).

ServiceType
Data type: string
Access type: Read-only

Type of service provided to calling processes.

The values are:

"Kernel Driver"

"File System Driver"

"Adapter"

"Recognizer Driver"

"Own Process"

"Share Process"

"Interactive Process"

Started
Data type: boolean
Access type: Read-only

Indicates whether or not the service is started.

StartMode
Data type: string
Access type: Read-only

Start mode of the Windows base service.

ValueMeaning
"Boot"

Device driver started by the operating system loader (valid only for driver services).

"System"

Device driver started by the operating system initialization process. This value is valid only for driver services.

"Auto"

Service to be started automatically by the service control manager during system startup. Auto services are started even if a user does not log on.

"Manual"

Service to be started by the Service Control Manager when a process calls the StartService method. These services do not start unless a user logs on and starts them.

"Disabled"

Service that cannot be started until its StartMode is changed to either Auto or Manual.

 

StartName
Data type: string
Access type: Read-only

Account name under which a service runs. Depending on the service type, the account name may be in the form of DomainName\Username or UPN format (Username@DomainName). The service process is logged by using one of these two forms when it runs. If the account belongs to the built-in domain, then .\Username can be specified. For kernel or system-level drivers, StartName contains the driver object name (that is, \FileSystem\Rdr or \Driver\Xns) which the I/O system uses to load the device driver. Additionally, if NULL is specified, the driver runs with a default object name created by the I/O system based on the service name.

Example: "DWDOM\Admin"

State
Data type: string
Access type: Read-only

Current state of the base service.

The values are:

"Stopped"

"Start Pending"

"Stop Pending"

"Running"

"Continue Pending"

"Pause Pending"

"Paused"

"Unknown"

Status
Data type: string
Access type: Read-only

Current status of the object. Various operational and nonoperational statuses can be defined. Operational statuses include: "OK", "Degraded", and "Pred Fail" (an element, such as a SMART-enabled hard disk drive, may be functioning properly but predicting a failure in the near future). Nonoperational statuses include: "Error", "Starting", "Stopping", and "Service". The latter, "Service", could apply during mirror-resilvering of a disk, reload of a user permissions list, or other administrative work. Not all such work is online, yet the managed element is neither "OK" nor in one of the other states.

The values are:

"OK"

"Error"

"Degraded"

"Unknown"

"Pred Fail"

"Starting"

"Stopping"

"Service"

SystemCreationClassName
Data type: string
Access type: Read-only

Type name of the system that hosts this service.

SystemName
Data type: string
Access type: Read-only

Name of the system that hosts this service.

TagId
Data type: uint32
Access type: Read-only

Unique tag value for this service in the group. A value of 0 (zero) indicates that the service does not have a tag. A tag can be used to order service startup within a load order group by specifying a tag order vector in the registry located at:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\    GroupOrderList

Tags are only evaluated for Kernel Driver and File System Driver start type services that have Boot or System start modes.
WaitHint
Data type: uint32
Access type: Read-only

Estimated time required, in milliseconds, for a pending start, stop, pause, or continue operation. After the specified time has elapsed, the service makes its next call to the SetServiceStatus method with either an incremented CheckPoint value or a change in CurrentState. If the amount of time specified by WaitHint passes, and CheckPoint has not been incremented, or CurrentState has not changed, the service control manager or service control program assumes that an error has occurred.

Remarks

The Win32_Service class is derived from Win32_BaseService.

The way in which you manage a specific computer depends greatly on the role that computer plays. For example, you generally monitor different aspects of a DNS server than a DHCP server. Although no single property can tell you whether a particular computer is a database server, an e-mail server, or a multimedia server, you can often identify the role a computer plays by identifying the services installed on it.

In large organizations, only one of the major services (such as e-mail) is likely to be installed on a single computer. It would be unusual for a mail server to also perform as a server for Microsoft® Windows Media® technologies player files. Because of this, identifying a service installed on a computer can help identify the computer's role in the network. If the Microsoft® Exchange Server service is installed and running on a computer, it is generally safe to assume that this computer functions as a mail server.

You can use the WMI Win32_Service class to enumerate the services installed on a computer. In addition, you can use this class to determine whether those services are currently running and to return any other required information about that service and how it has been configured.

A service application conforms to the interface rules of the Service Control Manager (SCM), and can be started by a user automatically at system start through the Services control panel utility, or by an application that uses the service functions included in the Windows API. Services can start when there are no users logged on to the computer.

A user connecting from a remote computer must have the SC_MANAGER_CONNECT privilege enabled to be able to enumerate this class. For more information, see Service Security and Access Rights.

Examples

The PS- WMI Query that returns Service 'State' on a group of devices PowerShell sample on TechNet Gallery uses Win32_Service to create a list of devices from Active Directory, and then query each device that responds with pingfor a specific service running.

The Server Report PowerShell sample on TechNet Gallery uses Win32_Service to gather server information and publish in Word document.

The following VBScript code sample displays all currently installed services.

for each Service in _ 
    GetObject("winmgmts:").InstancesOf ("win32_service")
 WScript.Echo ""
 WScript.Echo Service.Name

 description = Service.Description 
 if IsNull(description) then description = "<No description>"

 pathName = Service.PathName
 if IsNull(pathName) then pathName = "<No path>"

 startName = Service.StartName
 if IsNull(startName) then startName = "<None>"

 WScript.Echo "  Description:  ", description
 WScript.Echo "  Executable:   ", pathName
 WScript.Echo "  Status:       ", Service.Status
 WScript.Echo "  State:        ", Service.State
 WScript.Echo "  Start Mode:   ", Service.StartMode
 Wscript.Echo "  Start Name:   ", startName
next

The following VBScript code sample describes the paused, running, and stopped services on the specified computer.

On Error Resume Next
 StateString = "Paused,Running,Stopped"
 StateArray = Split(StateString, ",", -1, 1) 
 ComputerName = InputBox("Enter the computer name", "List Service", "localhost")

 For x = 0 to Ubound (StateArray)
 Set Services = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2").ExecQuery("SELECT * FROM Win32_Service where State='" & StateArray(x) & "'")
 
 For Each Service in Services
  SList = SList & Service.Name & VBlf 
 Next

 WScript.Echo StateArray(x) & " Services: " & VBlf & SList
 SList = ""

Next

The following Perl script demonstrates how to retrieve a list of running services from instances of Win32_Service.


use strict;
use Win32::OLE;

my ( $ServiceSet, $Service );

eval { $ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2")->
 ExecQuery("SELECT * FROM Win32_Service WHERE State=\"Running\""); };
unless ($@)
{
 print "\n";
 foreach $Service (in $ServiceSet) 
 {
  print $Service->{Name}, "\n";
  if( $Service->{Description} ) 
   {
    print "  $Service->{Description}\n";
   }
  else
   {
    print "  <No description>\n";
   }
  print "  Process ID: ", $Service->{ProcessId}, "\n";
  print "  Start Mode: ", $Service->{StartMode}, "\n";
  print "\n";
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

Requirements

Minimum supported client

Windows Vista

Minimum supported server

Windows Server 2003

Namespace

\root\CIMV2

MOF

CIMWin32.mof

DLL

CIMWin32.dll

See also

Operating System Classes
WMI Tasks: Services

 

 

Show:
© 2014 Microsoft