WScript.GetObject()不起作用,但GetObject()可以

时间:2014-01-20 22:28:35

标签: vbscript wsh

使用VBScript在Windows 7 Pro上获取进程列表时,将使用名为 getobject.vbs 的脚本:

Dim objWMIService

'
' case 1: this works:
'
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
WScript.Echo "GetObject() worked."

'
' case 2: this does not work:
'
Set objWMIService = WScript.GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
WScript.Echo "WScript.GetObject() does not work. So this line never runs."

'
' ...
'
Set objWMIService = Nothing

在案例1中,GetObject()运行良好。

但在案例2中,当使用WScript.GetObject()时,会发生以下错误:

enter image description here

GetObject()是一种WScript方法,请参阅Microsoft ref .. 为什么不能通过 WScript.GetObject()形式的完整引用来调用它?

作为比较,这两个电话都有效:

Dim xobj

Set xobj = CreateObject("Excel.Application")

Set xobj = WScript.CreateObject("Excel.Application")

1 个答案:

答案 0 :(得分:4)

a GetObject function of the VBScript language a GetObject method of the WScript object。它们不一样,它们的原型和用法/语用不同。

更新评论:

阅读Eric Lippert的article,了解为什么有类似函数的host- 语言提供的变体。

我的重击规则:使用Create / GetObject()的语言版本,除非您需要主机应用程序提供的附加内容(例如事件)。