Win32_Service 類別
Win32_Service WMI 類別代表執行 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 (“Service Accepts Stop”)
指出是否可以停止服務。
此屬性繼承自 Win32_BaseService。
-
-
標題
-
-
數據類型: 字串
-
存取類型:唯讀
-
限定符: MaxLen (64), DisplayName (“Caption”)
服務的簡短描述 -- 一行字串。
此屬性繼承自 CIM_ManagedSystemElement。
-
-
檢查站
-
-
數據類型: uint32
-
存取類型:唯讀
-
限定符:MappingStrings (“Win32API|服務結構|SERVICE_STATUS|dwCheckPoint“),DisplayName (”Check Point Count“)
服務會定期遞增以在長時間啟動、停止、暫停或繼續作業期間報告其進度的值。 例如,服務會在啟動時完成初始化的每個步驟時遞增此值。 在服務上叫用作業的使用者介面程式會使用此值,在長時間作業期間追蹤服務的進度。 這個值無效,當服務沒有啟動、停止、暫停或繼續作業擱置時,應該為零。
-
-
CreationClassName
-
-
數據類型: 字串
-
存取類型:唯讀
-
限定符:CIM_Key DisplayName (“類別名稱”)
要出現在實例建立時所用繼承鏈結中之第一個具體類別的名稱。 搭配 類別的其他索引鍵屬性使用時,這個屬性允許唯一識別此類別及其子類別的所有實例。
此屬性繼承自 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 (“與桌面互動”)
指出服務是否可以在桌面上建立或與 Windows 通訊,進而以某種方式與用戶互動。 互動式服務必須在本機系統帳戶下執行。 大部分的服務都不是互動式的;也就是說,他們不會以任何方式與用戶通訊。
此屬性繼承自 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”)
-
使用者未收到通知。
-
標準 (“正常 ”)
-
使用者會收到通知。 這通常是消息框顯示,通知用戶發生問題。
-
嚴重 (“嚴重 ”)
-
系統會使用最後一個已知良好的組態重新啟動。
-
重大 (“重大 ”)
-
系統嘗試以良好的設定重新啟動。 如果服務第二次無法啟動,啟動就會失敗。
-
未知 (“未知”)
-
錯誤的嚴重性未知。
此屬性繼承自 Win32_BaseService。
ExitCode
-
數據類型: uint32
-
存取類型:唯讀
-
限定符:MappingStrings (“Win32API|服務結構|SERVICE_STATUS|dwWin32ExitCode“),DisplayName (”Exit Code“)
定義啟動或停止服務時所發生錯誤的 Windows 錯誤碼。 當錯誤對於此類別所代表的服務而言是唯一時,此屬性會設定為 [ERROR_SERVICE_SPECIFIC_ERROR] \(1066),此錯誤的相關資訊可見於 ServiceSpecificExitCode 屬性。 服務會將此值設定為 在執行時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 (”服務類型“)
為呼叫處理序所提供的服務類型。
值如下:
核心驅動程式 (“Kernel Driver ”)
檔案系統驅動程式 (“檔案系統驅動程式”)
配接器 (“配接 器”)
辨識器驅動程式 (“辨識器驅動程式”)
自己的行程 (“自己的進程”)
共用行程 (“共享行程”)
互動式程式 (“互動式進程”)
此屬性繼承自 Win32_BaseService。
Started
-
數據類型: 布爾值
-
存取類型:唯讀
-
限定符: DisplayName (“Started”)
指出服務是否已啟動。
此屬性繼承自 CIM_Service。
StartMode
-
數據類型: 字串
-
存取類型:唯讀
-
限定符: DisplayName (“開始模式”)
Windows 基底服務的啟動模式。
開機 (“開機 ”)
由作業系統載入器啟動的裝置驅動程式(僅適用於驅動程式服務)。
系統 (“系統 ”)
由作業系統初始化程式啟動的裝置驅動程式。 此值僅適用於驅動程序服務。
Auto (“Auto ”)
服務控制管理員在系統啟動期間自動啟動的服務。 即使使用者未登入,也會啟動自動服務。
手動 (“手動 ”)
當行程呼叫 StartService 方法時,服務會由服務控制管理員啟動。 除非使用者登入並啟動這些服務,否則這些服務不會啟動。
Disabled (“Disabled”)
在 StartMode 變更為 Auto 或 Manual 之前無法啟動的服務。
此屬性繼承自 CIM_Service。
StartName
-
數據類型: 字串
-
存取類型:唯讀
-
限定符:MappingStrings (“Win32API|服務結構|QUERY_SERVICE_CONFIG|lpServiceStartName“),DisplayName (”起始帳戶名稱“)
服務執行所在的帳戶名稱。 視服務類型而定,帳戶名稱的格式可能是 “DomainName\Username” 或 UPN 格式 (“Username@DomainName” )。 服務進程會在執行時,使用這兩種窗體的其中一個來記錄。 如果帳戶屬於內建網域,則可以指定 “.\Username”。 針對核心或系統層級驅動程式, StartName 包含 I/O 系統用來載入設備驅動器的驅動程式物件名稱(也就是 “\FileSystem\Rdr” 或 “\Driver\Xns”。 此外,如果 指定 NULL ,驅動程式會使用以服務名稱為基礎的 I/O 系統所建立的預設物件名稱執行。
範例:“DWDOM\管理員”
此屬性繼承自 Win32_BaseService。
州 (縣/市)
-
數據類型: 字串
-
存取類型:讀取/寫入
-
限定符:MappingStrings (“Win32API|服務結構|SERVICE_STATUS|dwCurrentState “,”DisplayName (“State”)
基底服務的目前狀態。
值如下:
停止停止 (“已停止”)
開始擱置 中 (“開始擱置中”)
停止擱置 中 (“停止擱置中”)
執行 中 (“Running”)
繼續擱置 (“繼續擱置中”)
暫停擱置 中 (“暫停擱置中”)
已暫停 (“Paused”)
未知 (“未知”)
Windows Server 2008 和 Windows Vista: 此屬性在 Windows 7 和 Windows Server 2008 R2 之前是只讀的。
此屬性繼承自 Win32_BaseService。
狀態
-
數據類型: 字串
-
存取類型:唯讀
-
限定符: MaxLen (10), DisplayName (“Status”)
物件的目前狀態。 您可以定義各種操作和非操作狀態。 作業狀態包括:「OK」、「已降級」和「Pred Fail」(智慧型硬碟等元素可能正常運作,但預測近期失敗)。 非操作狀態包括:“Error”、“Starting”、“Stopping” 和 “Service”。 後者「服務」可以在磁碟的鏡像重新Silvering、重載用戶權力清單或其他系統管理工作期間套用。 並非所有這類工作都在線上,但 Managed 元素既不是「確定」,也不是在其他其中一個狀態。
此屬性繼承自 CIM_ManagedSystemElement 。
值如下:
確定 (「OK」)
錯誤 (「錯誤」)
已降級 (「已降級」)
未知 (「未知」)
Pred Fail (「Pred Fail」)
啟動 (「開始」)
停止 (「停止」)
服務 (「Service」)
壓力(「壓力」)
NonRecover (「NonRecover」)
無連絡人 (「無連絡人」)
Lost Comm (「Lost Comm」)
SystemCreationClassName
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: 傳播 (「 CIM_System. CreationClassName「), CIM_Key DisplayName (」System Class Name「)
裝載此服務之系統的類型名稱。
此屬性繼承自 CIM_Service 。
SystemName
-
資料類型: 字串
-
存取類型:唯讀
-
限定詞: 傳播 (「 CIM_System. Name ), CIM_Key DisplayName (「系統名稱」)
裝載此服務之系統的名稱。
此屬性繼承自 CIM_Service 。
TagId
-
資料類型: uint32
-
存取類型:唯讀
-
限定詞: MappingStrings (「Win32API|服務結構| QUERY_SERVICE_CONFIG|dwTagId「), DisplayName (」標記識別項「)
群組中此服務的唯一標籤值。 值為 0 (零) 表示服務沒有標記。 標記可用來在載入順序群組內排序服務啟動,方法是在登錄中指定標籤順序向量,其位於:
\ HKEY_LOCAL_MACHINE System \ CurrentControlSet \ 控制項 \ 群組OrderList
標籤只會針對具有開機模式或系統啟動模式的核心驅動程式和檔案系統驅動程式啟動類型服務進行評估。
此屬性繼承自 Win32_BaseService 。
WaitHint
-
資料類型: uint32
-
存取類型:唯讀
-
限定詞: MappingStrings (「Win32API|服務結構| SERVICE_STATUS|dwWaitHint), DisplayName (「估計等候時間」)
暫止開始、停止、暫停或繼續作業的預估時間,以毫秒為單位。 經過指定的時間之後,服務會使用遞增的 CheckPoint 值或 CurrentState 中的 變更,對 SetServiceStatus 方法進行下一次呼叫 。 如果 WaitHint 所指定的 時間量通過,而且 CheckPoint 尚未遞增,或 CurrentState 尚未變更,則服務控制管理員或服務控制程式會假設發生錯誤。
備註
Win32_Service 類別衍生自 Win32_BaseService 。
您管理特定電腦的方式在很大程度上取決於電腦扮演的角色。 例如,您通常會監視 DNS 伺服器與 DHCP 伺服器不同的層面。 雖然沒有任何單一屬性可以告訴您特定電腦是資料庫伺服器、電子郵件伺服器或多媒體伺服器,但您通常可以藉由識別已安裝的服務來識別電腦扮演的角色。
在大型組織中,只有一個主要服務(例如電子郵件)可能會安裝在單一電腦上。 郵件伺服器也會以 Microsoft® Windows Media® 技術播放機檔案的伺服器身分執行,這很不尋常。 因此,識別電腦上安裝的服務有助於識別電腦在網路中的角色。 如果在電腦上安裝並執行 Microsoft® Exchange Server 服務,通常可以放心地假設這部電腦會當做郵件伺服器運作。
您可以使用 WMI Win32_Service 類別來列舉電腦上安裝的服務。 此外,您可以使用這個類別來判斷這些服務目前是否正在執行,並傳回任何其他有關該服務的必要資訊及其設定方式。
服務應用程式符合服務控制管理員 (SCM) 的介面規則,而且可由使用者透過服務控制台公用程式自動啟動,或是由使用 Windows API 中包含的服務函式的應用程式自動啟動。 當沒有任何使用者登入電腦時,服務就可以啟動。
從遠端電腦連線的使用者必須 啟用SC_MANAGER_CONNECT 許可權,才能列舉此類別。 如需詳細資訊,請參閱 服務安全性和存取權限 。
範例
下列 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 |
Namespace |
Root\CIMV2 |
MOF |
|
DLL |
|
另請參閱