2011-05-29 62 views
0

在下面的代碼示例中,如何檢查什麼類型/類objItem是? (即它是否是一個win32_service時或沒有)JScript/WMI - 如何檢查項目的類別/類型?

var wbemFlagReturnImmediately = 0x10; 
var wbemFlagForwardOnly = 0x20; 

var objWMIService = GetObject("winmgmts:\\\\.\\root\\CIMV2"); 
var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); 

var enumItems = new Enumerator(colItems); 
for (; !enumItems.atEnd(); enumItems.moveNext()) 
{ 
    var objItem = enumItems.item(); 
    ... 

我想補充一個條件在像結尾:

如果(objItem是類win32_service時的) { 做的東西 }

+0

看起來您已經在此網站上意外創建了兩個帳戶 - [743639](http://stackoverflow.com/users/743639/daveuk)和[774909](http://stackoverflow.com/users/ 774909/daveuk)。您可以[請管理員合併它們](http://meta.stackexchange.com/questions/18232/how-can-one-link-merge-combine-associate-two-accounts-users-anonymous-unregiste/73801# 73801)所以你可以更好地跟蹤你的帖子。 – Helen 2011-05-31 08:17:15

回答

1

檢查SWbemObject.Path_ Class屬性。

2

我想,在這段代碼中沒有必要檢查類的類型。因爲您在WQL中要求Win32_Service類。所以,它只會返回那個類。您可以開始獲取Win32_Service的屬性,如objItem.Caption.

+0

實際上這不是真的,這個調用可以返回(至少)Win32_Service和Win32_SystemDriver。無論哪種方式,我非常有興趣瞭解如何檢查objItem的類型/類,因爲這也可以幫助我處理其他項目。 – DaveUK 2011-05-29 16:29:10

+1

@DaveUK:Win32_Service查詢應該只返回Win32_Service實例。如果您查詢Win32_BaseService,則會同時獲得Win32_Service和Win32_SystemDriver實例。 – 2011-05-30 08:51:49

+0

@Uros:對於'SELECT'查詢,這是正確的,但'ASSOCIATORS OF'查詢可以返回兩者,如[Dave的另一個問題](http://stackoverflow.com/q/6134484/113116)。 – Helen 2011-05-31 08:12:10