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没有创建成功!不知何故,敬请大哥大姐指点迷津!