ASP 调用 DLL 读 BIOS 问题
小弟想通过DLL来获得服务器 BIOS信息,如版本号、序列号。在VB 下可以实现,但将它封装成DLL,在ASP中调用则出错。VB代码如下:(注:引用VMI)
Private Sub Form_Load()
Dim BiosSet As SWbemObjectSet
'方法一:
Dim bios As SWbemObject
Dim SerialNumber
Dim iIndex As Integer
On Error Resume Next
Set BiosSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_BIOS")
For Each bios In BiosSet
SerialNumber = SerialNumber & bios.SerialNumber
Next
'方法二:
Dim objWMIService As SWbemServicesEx
Dim colItems As SWbemObjectSet
strComputer = "."
MsgBox TypeName(objWMIService)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
MsgBox TypeName(objWMIService)
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
For Each objItem In colItems
MsgBox "Version: " & objItem.Version
Next
End Sub
但将它封装成DLL,在ASP中调用则出错,代码如下:
Private MyScriptingContext As ScriptingContext
Private Application As Application
Private Request As Request
Private Response As Response
Private Server As Server
Private Session As Session'======================定义变量开始======================Dim Conn
Dim FoundErr
Dim ErrMsg
Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)Set MyScriptingContext = PassedScriptingContext
Set Application = MyScriptingContext.Application
Set Request = MyScriptingContext.Request
Set Response = MyScriptingContext.Response
Set Server = MyScriptingContext.Server
Set Session = MyScriptingContext.Session'=================Asp代码结束==================
End SubPublic Sub OnEndPage()
Set MyScriptingContext = Nothing
Set Application = Nothing
Set Request = Nothing
Set Response = Nothing
Set Server = Nothing
Set Session = Nothing
'=================Asp代码结束==================
End SubFunction GetSN()
Dim objWMIService As SWbemServicesEx
Dim colItems As SWbemObjectSet
Response.Write TypeName(objWMIService)
On Error Resume Next
strComputer = "."
Set objWMIService = Server.CreateObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
Response.Write TypeName(objWMIService) For Each objItem In colItems
Response.Write "Caption: " & objItem.Caption
Response.Write "SerialNumber: " & objItem.SerialNumber
Response.Write "Version: " & objItem.Version
Next
End Function
调用的网页代码如下:
<%
dim obj
set obj=server.CreateObject("TestVMI.Main")
obj.GetSN()
%>
输出到页面上的为:NothingNothing
可见SWbemServicesEx没有创建成功!不知何故,敬请大哥大姐指点迷津!
小弟想通过DLL来获得服务器 BIOS信息,如版本号、序列号。在VB 下可以实现,但将它封装成DLL,在ASP中调用则出错。VB代码如下:(注:引用VMI)
Private Sub Form_Load()
Dim BiosSet As SWbemObjectSet
'方法一:
Dim bios As SWbemObject
Dim SerialNumber
Dim iIndex As Integer
On Error Resume Next
Set BiosSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_BIOS")
For Each bios In BiosSet
SerialNumber = SerialNumber & bios.SerialNumber
Next
'方法二:
Dim objWMIService As SWbemServicesEx
Dim colItems As SWbemObjectSet
strComputer = "."
MsgBox TypeName(objWMIService)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
MsgBox TypeName(objWMIService)
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
For Each objItem In colItems
MsgBox "Version: " & objItem.Version
Next
End Sub
但将它封装成DLL,在ASP中调用则出错,代码如下:
Private MyScriptingContext As ScriptingContext
Private Application As Application
Private Request As Request
Private Response As Response
Private Server As Server
Private Session As Session'======================定义变量开始======================Dim Conn
Dim FoundErr
Dim ErrMsg
Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)Set MyScriptingContext = PassedScriptingContext
Set Application = MyScriptingContext.Application
Set Request = MyScriptingContext.Request
Set Response = MyScriptingContext.Response
Set Server = MyScriptingContext.Server
Set Session = MyScriptingContext.Session'=================Asp代码结束==================
End SubPublic Sub OnEndPage()
Set MyScriptingContext = Nothing
Set Application = Nothing
Set Request = Nothing
Set Response = Nothing
Set Server = Nothing
Set Session = Nothing
'=================Asp代码结束==================
End SubFunction GetSN()
Dim objWMIService As SWbemServicesEx
Dim colItems As SWbemObjectSet
Response.Write TypeName(objWMIService)
On Error Resume Next
strComputer = "."
Set objWMIService = Server.CreateObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
Response.Write TypeName(objWMIService) For Each objItem In colItems
Response.Write "Caption: " & objItem.Caption
Response.Write "SerialNumber: " & objItem.SerialNumber
Response.Write "Version: " & objItem.Version
Next
End Function
调用的网页代码如下:
<%
dim obj
set obj=server.CreateObject("TestVMI.Main")
obj.GetSN()
%>
输出到页面上的为:NothingNothing
可见SWbemServicesEx没有创建成功!不知何故,敬请大哥大姐指点迷津!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货