QQ_1754894895818.png

运行后自动产生一个html文件,可以直接打开查看也可以考虑拖动到ai聊天窗口咨询分析

'==========================================================================
'
' Date:2009/3/19 (修改版)
' Name: 查询软件和硬件列表清单
' Comment: blogs.itecn.net/smileruner
' Author:Smileruner
' www.overmcse.com
' 不支持Win2000及WinNT
'
' 3/19,添加了网卡过滤。
' 修改版:增加了启动项查询功能
'==========================================================================
'on error resume Next
const HKEY_LOCAL_MACHINE = &H80000002 
const HKEY_CURRENT_USER = &H80000001
const UNINSTALL_ROOT = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
const STARTUP_ROOT_LM = "Software\Microsoft\Windows\CurrentVersion\Run"
const STARTUP_ROOT_CU = "Software\Microsoft\Windows\CurrentVersion\Run"
const REG_SZ = 1
const REG_EXPAND_SZ = 2
'==========================================================================
'Set wshshell=wscript.createobject("wscript.shell")
' wshshell.run ("%comspec% /c regsvr32 /s scrrun.dll"),0,true
' wshshell.run ("%comspec% /c sc config  winmgmt start= auto"),0,true
' wshshell.run ("%comspec% /c net start winmgmt"),0
strIPPattern = "((2[0-4]\d|25[0-5]|1?\d\d?)\.){3}(2[0-4]\d|25[0-5]|1?\d\d?)"
Set objNet = createobject("Wscript.Network")
Set objRegExp = New RegExp
objregexp.Pattern = strIPPattern
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.IPAddress) Then 
        For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                        If InStr(IPConfig.Caption(i),"VMware") = 0 And InStr(IPConfig.Caption(i),"Microsoft") = 0 Then
                        If InStr(IPConfig.Caption(i),"169.254") = 0 And InStr(IPConfig.Caption(i),"0.0.0.0") = 0 Then
                                If objregexp.Test(IPConfig.IPAddress(i)) = True Then        
                                    strIP = IPConfig.IPAddress(i)
                            End If
                    End If
            End If
        Next
    End If
Next
strUser = objnet.UserName
Set objNetwork = CreateObject("WScript.Network") 
'==========================================================================
strComputer = objNetwork.ComputerName
If strComputer = "" then
        Wscript.Echo "未输入值或用户取消,查询退出。"
        Wscript.Quit
End If
Set objswbemlocator = createobject("wbemscripting.swbemlocator")
Set objswbemservices = objswbemlocator.connectserver(strComputer, "root\cimv2")
If Err.number <> 0 then
        Wscript.Echo "目标计算机无法连接。错误的计算机名,或目标计算机启用了防火墙,RPC服务不可用。"
        Err.number.clear
        Wscript.Quit
End If
'swbemservices.security_.impersonationleobjvel = 3
Set fso=createobject("scripting.filesystemobject")
FileDate = Replace(date(), "/", "-")
resoultfilepath= strComputer & "_" & FileDate & ".html"
Set resultFile= fso.createtextfile(resoultfilepath,,true)
HtmlWriteHead()
'Html文档开始
TableHead strComputer,"硬件清单"
'Html表格开始
OsWrite()        
                        '写入操作系统信息
BoardWrite()
                        '写入主板信息
CpuWrite()       
                        '写入CPU信息
MemoryWrite()        
                        '写入内存信息
HarddiskWrite()
                        '写入硬盘信息
CdromWrite()
                        '写入CDROM信息
VideoWrite()
                        '写入显示卡信息
NetcardWrite()
                        '写入网卡信息
TableEnd()
                        'Html表格结尾
TableHead strComputer,"软件清单"
                        'Html表格开头
Softlist()
                        '写入软件信息
TableEnd()
                        'Html表格结尾
TableHead strComputer,"启动项清单"
                        'Html表格开头
StartupList()
                        '写入启动项信息
TableEnd()
                        'Html表格结尾
HtmlWriteEnd()
                        'Html文档结束
ResultFile.close 
Wscript.Echo "查询完成!"
'=========以下是函数列表==========

Function OsWrite() 
                '函数,写入操作系统信息
        Set colOs =objswbemservices.execquery("select * from win32_operatingsystem",,48)
        For Each Ositem In colOs
                oscaption = Ositem.caption
                OsVersion = oscaption & Ositem.version
                WriteTable "操作系统",OsVersion
        Next
End Function 

Function BoardWrite()
                '函数,写入主板信息
        Set colBoard = objswbemservices.execquery("select * from win32_baseboard")
        For Each Bditem In colBoard
                boardname = Bditem.product
                WriteTable "主板",boardname
        Next
End Function 

Function CpuWrite()
                '函数,写入CPU信息
        Set colCpu =objswbemservices.execquery("select * from win32_processor")
        For Each item in colCpu
                cpuname =  (trim(item.name))
                WriteTable "中央处理器",cpuname
        Next
End Function 
Function MemoryWrite()
                '函数,写入内存信息
mtotal        = 0
num         = 0
mill         = 0
        Set colMemory = objswbemservices.execquery("select * from win32_physicalmemory",,48)
        For Each objitem In colMemory
                mill = objitem.capacity/1048576
                WriteTable "单根内存容量",mill & "M"
                mtotal = mtotal+mill
                num = num + 1
        Next
        WriteTable "总计内存",num & "条" & "一共" & mtotal & "M"
End Function 
Function HarddiskWrite()
                '函数,写入硬盘信息
        Set colDisk = objswbemservices.execquery("select * from win32_diskdrive", , 48)
        For Each objitem In colDisk
                diskname= objitem.caption
                disksize= fix(objitem.size/1073741824)
                disknumber= objitem.size
                WriteTable "硬盘",diskname & " 容量:" & disksize & "G" 
        Next
End Function 
 
Function CdromWrite()
                '函数,写入CDROM信息
        Set colCdrom = objswbemservices.execquery("select * from win32_cdromdrive where scsitargetid=0")
        For Each objitem In colCdrom
                cdname = objitem.name
                WriteTable "光驱",cdname
        Next
End Function
Function videoWrite()
                '函数,写入显示卡信息
        Set colVideo = objswbemservices.execquery("select * from win32_videocontroller", , 48)
        For Each objitem in colVideo
                videoname = (trim(objitem.caption) & (objitem.videomodedescription)) 
                WriteTable "显示卡",videoname
        Next
End Function 

Function netcardWrite()
                '函数,查询网卡信息
        Set colNetcards = objswbemservices.execquery("select * from win32_networkadapter")
                For Each objNetcard in colNetcards                        
                If Not IsNull(objNetcard.NetConnectionID) Then
                        NetCardName         =  objNetcard.productname
                               WriteTable "网卡名称",NetCardName
                 
                        If objNetcard.NetConnectionStatus = 2 Then                         
                        NetCardMac         =  objNetcard.macaddress
                        WriteTable "网卡Mac",NetCardMac
                        strQueryIp ="select * from win32_networkadapterconfiguration" &_
                                         " where IPEnabled = true" &_
                                         " and macaddress = '" & objNetcard.macaddress & "'"
                        Set colNetcardCfgs = objswbemservices.execquery(strQueryIp) 
                        For Each objNetcardCfg in colNetcardCfgs                
                                For Each CfgAdrress in objNetcardCfg.IPAddress
                                        IpAdrress = CfgAdrress
                                        WriteTable "IP地址",IpAdrress
                                Next
                        Next        
                        Else
                        NetCardMac = "网卡被禁用或未连接。"
                        WriteTable "网卡Mac",NetCardMac
                        IpAdrress = "网卡被禁用或未连接。"    
                        WriteTable "IP地址",IpAdrress        
                        
                        End If
                                
                End if
                        
                Next
End Function 

Function softlist()
                '函数,写入软件信息
Set StdOut = WScript.StdOut 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
strComputer & "\root\default:StdRegProv") 
strKeyPath = UNINSTALL_ROOT 
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys 
For Each strSubKey In arrSubKeys 
        If NotHotfix(strSubKey) Then                
                SoftNameAndVersion = getProgNameAndVersion(oReg,strKeyPath & "\" & strSubKey)
                If SoftNameAndVersion<>"0" Then 
                WriteTable "软件",SoftNameAndVersion                
                End If 
        End If
Next                 
End Function

Function StartupList()
                '函数,写入启动项信息
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
strComputer & "\root\default:StdRegProv") 

' 查询本地机器的启动项
WriteTable "启动项类型","系统启动项 (HKEY_LOCAL_MACHINE)"
QueryStartupItems oReg, HKEY_LOCAL_MACHINE, STARTUP_ROOT_LM

' 查询当前用户的启动项
WriteTable "启动项类型","用户启动项 (HKEY_CURRENT_USER)"
QueryStartupItems oReg, HKEY_CURRENT_USER, STARTUP_ROOT_CU

' 通过WMI查询Win32_StartupCommand
WriteTable "启动项类型","WMI查询启动项"
Set colStartup = objswbemservices.execquery("select * from Win32_StartupCommand")
For Each objStartup In colStartup
    startupName = objStartup.Name
    startupCommand = objStartup.Command
    startupLocation = objStartup.Location
    If startupName <> "" Then
        WriteTable "启动项名称", startupName
        WriteTable "启动命令", startupCommand
        WriteTable "启动位置", startupLocation
        WriteTable "---", "---" ' 分隔线
    End If
Next

' 查询启动文件夹中的项目
QueryStartupFolder
End Function

Function QueryStartupItems(oReg, hiveKey, keyPath)
                '函数,查询注册表启动项
Dim arrValueNames, arrValueTypes, i, valueName, valueData, valueType

oReg.EnumValues hiveKey, keyPath, arrValueNames, arrValueTypes

If IsArray(arrValueNames) Then
    For i = 0 To UBound(arrValueNames)
        valueName = arrValueNames(i)
        valueType = arrValueTypes(i)
        
        If valueType = REG_SZ Or valueType = REG_EXPAND_SZ Then
            oReg.GetStringValue hiveKey, keyPath, valueName, valueData
            If valueData <> "" Then
                WriteTable "启动项", valueName & " --> " & valueData
            End If
        End If
    Next
Else
    WriteTable "启动项", "此分支下无启动项"
End If
End Function

Function QueryStartupFolder()
                '函数,查询启动文件夹
On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

' 查询所有用户启动文件夹
startupFolderAll = objShell.SpecialFolders("AllUsersStartup")
If objFSO.FolderExists(startupFolderAll) Then
    WriteTable "启动文件夹", "所有用户启动文件夹: " & startupFolderAll
    Set objFolder = objFSO.GetFolder(startupFolderAll)
    For Each objFile In objFolder.Files
        WriteTable "启动文件", objFile.Name & " (" & objFile.Path & ")"
    Next
Else
    WriteTable "启动文件夹", "所有用户启动文件夹不存在或无法访问"
End If

' 查询当前用户启动文件夹
startupFolderUser = objShell.SpecialFolders("Startup")
If objFSO.FolderExists(startupFolderUser) Then
    WriteTable "启动文件夹", "当前用户启动文件夹: " & startupFolderUser
    Set objFolder = objFSO.GetFolder(startupFolderUser)
    For Each objFile In objFolder.Files
        WriteTable "启动文件", objFile.Name & " (" & objFile.Path & ")"
    Next
Else
    WriteTable "启动文件夹", "当前用户启动文件夹不存在或无法访问"
End If

On Error Goto 0
End Function

Function NotHotfix(sSubKey)        
        If Left(sSubkey,2) = "KB" And len(sSubkey) = 8 Then
                NotHotfix = 0
        Else NotHotfix = 1
        End if
End Function
Function getProgNameAndVersion(oReg,sKeyRoot)
Dim sKeyValuesAry, iKeyTypesAry, nCnt, sValue, sDisplayName, sDisplayVersion
oReg.EnumValues HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry, iKeyTypesAry
        If NOT IsArray(sKeyValuesAry) Then 
                getProgNameAndVersion = 0
                Exit Function  
        End If
        For nCnt = 0 To UBound(sKeyValuesAry)
                If InStr(1, sKeyValuesAry(nCnt), "DisplayName", vbTextCompare) Then
                        If iKeyTypesAry(nCnt) = REG_SZ Then
                                oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue
                                If sValue<>"" Then 
                                        sDisplayName = sValue                                
                                        sDisplayName = Replace(sDisplayName, "[", "(")
                                        sDisplayName = Replace(sDisplayName, "]", ")")
                                End If
                        End If
                ElseIf InStr(1, sKeyValuesAry(nCnt), "DisplayVersion", vbTextCompare) Then
                        If iKeyTypesAry(nCnt) = REG_SZ Then
                                oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue
                                If sValue<>"" Then sDisplayVersion = sValue
                        End If
                End If
                If (sDisplayName<>"") AND (sDisplayVersion<>"") Then 
                        getProgNameAndVersion = sDisplayName & " --版本号: " & sDisplayVersion
                        Exit Function
                Else         getProgNameAndVersion = 0                        
                End If
        Next
        If sDisplayName<>"" Then 
                getProgNameAndVersion = sDisplayName
                Exit Function                                        
        End If
End Function

Function WriteTable(caption,value)
                '函数,将数据写入HTML单元格
resultFile.Writeline "<tr>"
resultFile.Writeline "<td align=""left"" width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""row"">&nbsp;&nbsp;" & caption & "</td>"
resultFile.Writeline "<td bgcolor=""#ffffff"">&nbsp;&nbsp;" & value & "</td>"
resultFile.Writeline "</tr>"
End Function 
Function HtmlWriteHead()
                '函数,写入THML文件头
resultFile.Writeline "<html>" 
resultFile.Writeline "<head>" 
resultFile.Writeline "<title>软硬件配置清单</title>"
resultFile.Writeline "</head>" 
resultFile.Writeline "<body>" 
End Function 

Function HtmlWriteEnd()
                '函数,写入Html文件尾
resultFile.Writeline "</body>" 
resultFile.Writeline "</html>" 
End Function 
Function TableHead(pcname,str)
                '函数,写入Html表格结尾
resultFile.Writeline "<h3>" & pcname & str & " -- date:"&now()&" </h3>" & VbCrLf
resultFile.Writeline "<table width=""90%"" border=""0"" align=""center"" cellpadding=""0"" cellspacing=""1"" bgcolor=""#0000ff"">" 
resultFile.Writeline "<tr>" 
resultFile.Writeline "<th width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""col"">资产类型</th>"
resultFile.Writeline "<th bgcolor=""#ffffff"" scope=""col"">查询结果值</th>"
resultFile.Writeline "</tr>" 
strstyle = "<th width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""row"">"
End Function 
Function TableEnd()
                '函数,Html表格结尾
resultFile.Writeline "</table>" 
End Function
033ac7326f7b31c6d3f84aab93bb96b5.png

这是ai的建议

b48938774b05180eebbfbcc522b56666.png
Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐