Win32_Service 类

Win32_ServiceWMI 类表示运行Windows的计算机系统上的服务。

以下语法从托管对象格式 (MOF) 代码中简化,包括所有继承的属性。 属性和方法按字母顺序排列,而不是 MOF 顺序。

语法

[Dynamic, Provider("CIMWin32"), SupportsUpdate, UUID("{8502C4D9-5FBB-11D2-AAC1-006008C78BC7}"), DisplayName("Services"), AMENDMENT]
class Win32_Service : Win32_BaseService
{
  boolean  AcceptPause;
  boolean  AcceptStop;
  string   Caption;
  uint32   CheckPoint;
  string   CreationClassName;
  boolean  DelayedAutoStart;
  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;
};

成员

Win32_Service类包含以下类型的成员:

方法

Win32_Service类具有这些方法。

方法 说明
改变 修改服务。
ChangeStartMode 修改服务的启动模式。
创建 创建一项新服务。
删除 删除现有服务。
GetSecurityDescriptor 返回控制对服务的访问的安全描述符。
InterrogateService 请求服务将其状态更新到服务管理器。
PauseService 尝试将服务置于暂停状态。
ResumeService 尝试将服务置于恢复状态。
SetSecurityDescriptor 编写控制对服务的访问的安全描述符的更新版本。
StartService 尝试将服务置于启动状态。
StopService 将服务置于已停止状态。
UserControlService 尝试将用户定义的控制代码发送到服务。

 

属性

Win32_Service类具有这些属性。

AcceptPause

数据类型: 布尔值

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_PAUSE_CONTINUE“) , DisplayName (”服务接受暂停“)

指示是否可以暂停服务。

此属性继承自 Win32_BaseService

AcceptStop

数据类型: 布尔值

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwControlsAccepted|SERVICE_ACCEPT_STOP“) , DisplayName (”服务接受停止“)

指示是否可以停止服务。

此属性继承自 Win32_BaseService

Caption

数据类型: 字符串

访问类型:只读

限定符: MaxLen (64) , DisplayName (“Caption”)

服务的简短说明 - 一行字符串。

此属性继承自 CIM_ManagedSystemElement

检查站

数据类型: uint32

访问类型:只读

限定符:MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwCheckPoint“) ,DisplayName (”Check Point Count“)

服务在长时间启动、停止、暂停或继续操作期间定期递增以报告其进度的值。 例如,服务在启动时完成其初始化的每个步骤时递增此值。 调用服务操作的用户界面程序使用此值在长时间的操作期间跟踪服务的进度。 此值无效,当服务没有启动、停止、暂停或继续操作挂起时,该值应为零。

CreationClassName

数据类型: 字符串

访问类型:只读

限定符: CIM_KeyDisplayName (“类名”)

在创建实例时使用的继承链中显示的第一个具体类的名称。 与类的其他键属性一起使用时,此属性允许唯一标识此类及其子类的所有实例。

此属性继承自 CIM_Service

DelayedAutoStart

数据类型: 布尔值

访问类型:只读

限定符:MappingStrings (“Win32API|服务结构|SERVICE_DELAYED_AUTO_START_INFO|fDelayedAutostart“) ,DisplayName (”延迟自动"开始"菜单“)

如果 为 True,则服务在启动其他自动启动服务后启动,加上短暂延迟。

Windows Server 2012 R2、Windows 8.1、Windows Server 2012、Windows 8、Windows Server 2008 R2、Windows 7、Windows Server 2008 和 Windows Vista:在Windows Server 2016和Windows 10之前不支持属性。

说明

数据类型: 字符串

访问类型:只读

限定符: DisplayName (“Description”)

对象的说明。

此属性继承自 CIM_ManagedSystemElement

DesktopInteract

数据类型: 布尔值

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|dwServiceType|SERVICE_INTERACTIVE_PROCESS“) , DisplayName (”与桌面交互“)

指示服务是否可以在桌面上创建或与窗口通信,从而以某种方式与用户交互。 交互式服务必须在本地系统帐户下运行。 大多数服务不是交互式的;也就是说,他们不会以任何方式与用户通信。

此属性继承自 Win32_BaseService

DisplayName

数据类型: 字符串

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|lpDisplayName“) , DisplayName (”显示名称“)

服务管理单元中查看的服务的名称。 此字符串的最大长度为 256 个字符。 请注意,在注册表) 中存储的显示名称和服务名称 (并不总是相同的。 例如,DHCP 客户端服务具有服务名称 Dhcp,但显示名称 DHCP 客户端。 名称在服务控制管理器中保留大小写。 但是, DisplayName 比较始终不区分大小写。

约束:接受与 Name 属性相同的值。

示例:“Atdisk”

此属性继承自 Win32_BaseService

ErrorControl

数据类型: 字符串

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|dwErrorControl“) , DisplayName (”启动失败严重性“)

如果此服务在启动时无法启动,则错误严重性。 该值指示启动程序在发生故障时执行的操作。 所有的错误都由计算机系统记录。

忽略 (“Ignore”)

不通知用户。

普通 (“Normal”)

通知用户。 通常,这是通知用户问题的消息框。

严重 (“严重”)

使用上一次已知正确的配置重新启动系统。

关键 (“关键”)

系统将尝试使用正确的配置重新启动。 如果服务第二次启动失败,启动会失败。

未知 (“未知”)

错误的严重性未知。

此属性继承自 Win32_BaseService

ExitCode

数据类型: uint32

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwWin32ExitCode“) , DisplayName (”Exit Code“)

Windows错误代码,用于定义启动或停止服务中遇到的错误。 如果错误是此类表示的服务所特有的,并且 ServiceSpecificExitCode 属性中包含该错误的相关信息,则此属性将设置为 ERROR_SERVICE_SPECIFIC_ERROR (1066)。 服务将此值设置为在运行时 NO_ERROR ,并在正常终止时再次设置为NO_ERROR。

此属性继承自 Win32_BaseService

InstallDate

数据类型: datetime

访问类型:只读

限定符: MappingStrings (“MIF。DMTF|ComponentID|001.5“) , DisplayName (”安装日期“)

安装 Date 对象。 此属性不需要一个值来指示对象已安装。

此属性继承自 CIM_ManagedSystemElement

名称

数据类型: 字符串

访问类型:只读

限定符: 密钥

服务的唯一标识符,用于指示所管理的功能。 此功能在对象的 Description 属性中介绍。

此属性继承自 CIM_ManagedSystemElement

PathName

数据类型: 字符串

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|lpBinaryPathName“) , DisplayName (”文件路径名称“)

实现该服务的服务二进制文件的完全限定路径。

示例:“\SystemRoot\System32\drivers\afd.sys”

此属性继承自 Win32_BaseService

ProcessId

数据类型: uint32

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS_PROCESS|dwProcessId“) , DisplayName (”Process Id“)

服务的进程标识符。

示例:324

ServiceSpecificExitCode

数据类型: uint32

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwServiceSpecificExitCode“) , DisplayName (”服务器特定的退出代码“)

服务特定的错误代码,用于服务正在启动或停止时发生的错误。 退出代码由此类表示的服务定义。 仅当 ExitCode 属性值 ERROR_SERVICE_SPECIFIC_ERROR ( 1066) 时才设置此值。

此属性继承自 Win32_BaseService

ServiceType

数据类型: 字符串

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|dwServiceType“) , DisplayName (”服务类型“)

用于调用进程的服务的类型。

有效值为:

内核驱动程序 (“内核驱动程序”)

文件系统驱动程序 (“文件系统驱动程序”)

适配器 (“Adapter”)

识别器驱动程序 (“识别器驱动程序”)

自己的进程 (“自己的进程”)

共享进程 (“共享进程”)

交互式进程 (“交互式进程”)

此属性继承自 Win32_BaseService

已开始

数据类型: 布尔值

访问类型:只读

限定符: DisplayName (“Started”)

指示是否启动服务。

此属性继承自 CIM_Service

StartMode

数据类型: 字符串

访问类型:只读

限定符:DisplayName (“"开始"菜单模式”)

Windows基础服务的"开始"菜单模式。

启动 (“启动”)

操作系统加载程序启动的设备驱动程序 (仅适用于驱动程序服务) 。

系统 (“系统”)

操作系统初始化过程启动的设备驱动程序。 此值只对驱动程序服务有效。

自动 (“自动”)

服务将在系统启动期间由服务控制管理器自动启动。 即使用户未登录,自动服务也会启动。

手动 (“手动”)

当进程调用 StartService 方法时,由服务控制管理器启动的服务。 除非用户登录并启动这些服务,否则这些服务不会启动。

禁用 (“Disabled”)

在 StartMode 更改为“自动”或“手动”之前无法启动的服务。

此属性继承自 CIM_Service

StartName

数据类型: 字符串

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|lpServiceStartName“) , DisplayName (”启动帐户名称“)

运行服务的帐户名称。 根据服务类型,帐户名称可能采用“DomainName\Username”或 UPN 格式 (“Username@DomainName”) 的形式。 服务进程在运行时使用这两种形式之一进行记录。 如果帐户属于内置域,则可以指定“.\Username”。 对于内核或系统级驱动程序, StartName 包含驱动程序对象名称 (,即“\FileSystem\Rdr”或“\Driver\Xns”) ,I/O 系统用来加载设备驱动程序。 此外,如果指定 NULL ,驱动程序会基于服务名称使用 I/O 系统创建的默认对象名称运行。

示例:“DWDOM\Admin”

此属性继承自 Win32_BaseService

State

数据类型: 字符串

访问类型:读/写

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwCurrentState “) , DisplayName (”State“)

基本服务的当前状态。

有效值为:

已停止 (“已停止 ”)

"开始"菜单挂起 (“"开始"菜单挂起”)

停止挂起 (“停止挂起”)

运行 (“正在运行”)

继续挂起 (“继续挂起”)

暂停挂起 (“暂停挂起”)

已暂停 (“已暂停”)

未知 (“未知”)

Windows Server 2008 和 Windows Vista:此属性在 Windows 7 和 Windows Server 2008 R2 之前是只读的。

此属性继承自 Win32_BaseService

Status

数据类型: 字符串

访问类型:只读

限定符: MaxLen (10) , DisplayName (“Status”)

对象的当前状态。 可以定义各种操作和非操作状态。 操作状态包括:“OK”、“已降级”和“Pred Fail” (一个元素(如已启用 SMART 的硬盘驱动器)可能正常运行,但预测近期) 中的故障。 非操作状态包括:“Error”、“Starting”、“Stopping”和“Service”。 后者“服务”可以在对磁盘进行镜像重新加密、重新加载用户权限列表或其他管理工作期间应用。 并非所有此类工作都处于联机状态,但托管元素既不是“正常”,也不是在其他状态之一。

此属性继承自 CIM_ManagedSystemElement

有效值为:

确定 (“确定”)

错误 (“错误”)

降级 (“已降级”)

未知 (“未知”)

Pred Fail (“Pred Fail”)

启动 (“启动”)

停止 (“停止”)

服务 (“服务”)

(“强调 ”)

NonRecover (“NonRecover ”)

无联系人 (“无联系人”)

Lost Comm (“Lost Comm”)

SystemCreationClassName

数据类型: 字符串

访问类型:只读

限定符: 传播 的 (“CIM_SystemCreationClassName“) 、 CIM_KeyDisplayName (”System Class Name“)

承载此服务的系统的类型名称。

此属性继承自 CIM_Service

SystemName

数据类型: 字符串

访问类型:只读

限定符:传播的 (“CIM_SystemName“) 、CIM_Key、DisplayName (”System Name“)

承载此服务的系统的名称。

此属性继承自 CIM_Service

TagId

数据类型: uint32

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|QUERY_SERVICE_CONFIG|dwTagId“) , DisplayName (”标记 ID“)

组中此服务的唯一标记值。 值 0 (零) 指示服务没有标记。 标记可用于在加载顺序组中对服务启动进行排序,方法是在位于以下位置的注册表中指定标记顺序向量:

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\控制\    GroupOrderList

标记仅针对具有启动模式或系统启动模式的内核驱动程序和文件系统驱动程序启动类型服务进行评估。

此属性继承自 Win32_BaseService

WaitHint

数据类型: uint32

访问类型:只读

限定符: MappingStrings (“Win32API|服务结构|SERVICE_STATUS|dwWaitHint“) , DisplayName (”估计等待时间“)

挂起的开始、停止、暂停或继续操作所需的估计时间(以毫秒为单位)。 指定时间过后,该服务会用递增的 CheckPoint 值或更改 CurrentStateSetServiceStatus 方法进行下一次调用。 如果 WaitHint 传递指定的时间量,并且 CheckPoint 尚未递增,或者 CurrentState 未更改,则服务控制管理器或服务控制程序假定发生了错误。

备注

Win32_Service类派生自 Win32_BaseService

管理特定计算机的方式在很大程度上取决于计算机所扮演的角色。 例如,通常监视 DNS 服务器与 DHCP 服务器不同的方面。 虽然没有单个属性可以告诉你特定计算机是数据库服务器、电子邮件服务器还是多媒体服务器,但通常可以通过标识计算机上安装的服务来标识计算机扮演的角色。

在大型组织中,只有一个主要服务 ((例如电子邮件) )安装在一台计算机上。 邮件服务器也作为 Microsoft® Windows 媒体®技术播放器文件的服务器执行操作会异常。 因此,识别计算机上安装的服务可以帮助识别计算机在网络中的角色。 如果在计算机上安装并运行 Microsoft® Exchange Server 服务,则通常可以放心地假定此计算机充当邮件服务器。

可以使用 WMI Win32_Service 类枚举计算机上安装的服务。 此外,可以使用此类来确定这些服务当前是否正在运行,并返回有关该服务的任何其他必需信息及其配置方式。

服务应用程序符合服务控制管理器的接口规则 (SCM) ,并且可由系统通过服务控制面板实用工具或使用Windows API 中包含的服务函数的应用程序自动启动。 当没有用户登录到计算机时,服务可以启动。

从远程计算机进行连接的用户必须具有启用 SC_MANAGER_CONNECT 特权才能枚举此类。 有关详细信息,请参阅 服务安全性和访问权限

示例

在 TechNet 库中 的一组设备 PowerShell 示例上返回服务“状态”的 PS- WMI 查询 使用 Win32_Service 从 Active Directory 创建设备列表,然后查询运行的特定服务的 ping 响应的每个设备。

TechNet 库中 的服务器报表 PowerShell 示例使用 Win32_Service 收集服务器信息并在 Word 文档中发布。

以下 VBScript 代码示例显示当前安装的所有服务。

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

以下 VBScript 代码示例描述了指定计算机上的暂停、正在运行和停止的服务。

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

以下 Perl 脚本演示如何从 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";
}

以下 c# 示例使用 Microsoft.Management.Infrastructure 在本地计算机上检索所有正在运行的服务。

static void QueryInstanceFunc()
        {
 
            CimSession session = CimSession.Create("localHost");
            IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Service");

            foreach (CimInstance cimObj in queryInstance)
            {
                Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());
                Console.WriteLine(cimObj.CimInstanceProperties["State"].ToString());
                Console.WriteLine(cimObj.CimInstanceProperties["Status"].ToString());
                
                //Console.WriteLine(cimObj.CimInstanceProperties["NetworkAddress"].ToString());
                Console.WriteLine();

            }

            Console.ReadLine();
        }
    

以下 C# 代码示例使用 System.Management 命名空间检索本地计算机上所有正在运行的服务。

注意

System.Management 包含用于访问 WMI 的原始类;但是,它们被视为较慢,通常不会缩放,并且通常不会缩放其 Microsoft.Management.Infrastructure 对应项。

 

using System.Management;
...
        static void oldSchoolQueryInstanceFunc()
        {

            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Service");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);


            ManagementObjectCollection queryCollection = searcher.Get();
            foreach (ManagementObject m in queryCollection)
            {
                Console.WriteLine("ServiceName : {0}", m["Name"]);
                Console.WriteLine("State : {0}", m["State"]);
                Console.WriteLine("Status : {0}", m["Status"]);
                Console.WriteLine();
            }

            Console.ReadLine();


        }

要求

要求
最低受支持的客户端
Windows Vista
最低受支持的服务器
Windows Server 2008
命名空间
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

另请参阅

Win32_BaseService

操作系统类

WMI 任务:服务