0

我正在尝试连接到 lenel 并使用 WQL 来获取结果。在 WMI 资源管理器中运行时 WQL 返回记录。

Set objServices = GetObject("winmgmts://./root/onguard")
Set cardSet = objServices.ExecQuery("select * from Lnl_Badge where id =11111")
if not cardSet is nothing then
Response.Write("<br/>cardset has something")
vContinue = true
else
Response.Write("<br/>cardSet set is nothing")
Exit Function
end if

Response.Write("<br/>count ")
Count = cardSet.Count
Response.Write(Count)

问题是 Count 的值什么也没有,程序退出当前函数。知道什么是错的。

但是会显示“卡组有东西”。

编辑:

为了检查语法,我为 cim2v 执行了以下操作

Set objWMIService = GetObject("winmgmts:")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
Response.Write(colItems.Count)
for each colItem in colItems

If Not colItem Is Nothing Then
    Response.Write("<br/>")
Response.Write(colItem.ProcessID)
end if
next

令我惊讶的是它的工作......那么为什么上面的代码没有工作...... :(

编辑:日志文件中的错误

(Tue Aug 20 11:50:22 2013.179589208) : WDM call returned error: 4200
(Tue Aug 20 11:50:22 2013.179589208) : WDM specific return code: 4200
(Tue Aug 20 11:50:22 2013.179589208) : 
4

1 回答 1

0

根据我对 WMI API 参考的理解,如果您没有遇到错误, SWbemServices.ExecQuery方法将始终返回一个 SWbemObjectSet 对象,无论该对象中是否有任何结果。

如果您的查询返回 0 个结果,您仍然有一个有效的对象 in cardSet,因此该If Not cardSet Is Nothing语句将始终触发,除非出现错误,但同时 count 仍将返回 0。

于 2013-08-20T06:29:18.450 回答