欢迎光临宣城市中国灵车网
详情描述

方法1:使用WMI(最常用)

Dim objWMI, colOS, objOS, strOS, strVersion

' 获取WMI对象
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")

' 查询操作系统信息
Set colOS = objWMI.ExecQuery("Select * from Win32_OperatingSystem")

For Each objOS In colOS
    ' 操作系统名称
    strOS = objOS.Caption

    ' 版本号(如 10.0.19045)
    strVersion = objOS.Version

    ' 生成详细版本信息
    Dim strInfo
    strInfo = "操作系统: " & strOS & vbCrLf & _
              "版本号: " & strVersion & vbCrLf & _
              "架构: " & objOS.OSArchitecture & vbCrLf & _
              "Build号: " & objOS.BuildNumber

    MsgBox strInfo, vbInformation, "系统信息"
Next

Set colOS = Nothing
Set objWMI = Nothing

方法2:使用环境变量

' 获取Windows版本(简写)
Dim osVersion
osVersion = Environ("OS")

' 获取系统根目录
Dim systemRoot
systemRoot = Environ("SystemRoot")

' 显示结果
MsgBox "OS: " & osVersion & vbCrLf & _
       "SystemRoot: " & systemRoot, vbInformation, "系统信息"

方法3:通过注册表获取更详细版本信息

Dim objShell, strVersion, strBuild, strEdition
Set objShell = CreateObject("WScript.Shell")

On Error Resume Next  ' 防止注册表项不存在报错

' 获取当前版本
strVersion = objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
strBuild = objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentBuild")
strEdition = objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EditionID")

' 显示结果
MsgBox "版本: " & strVersion & vbCrLf & _
       "Build: " & strBuild & vbCrLf & _
       "版本类型: " & strEdition, vbInformation, "注册表信息"

Set objShell = Nothing

方法4:完整版本识别脚本

' 获取Windows完整版本信息
Function GetWindowsVersion()
    Dim objWMI, colOS, objOS, strVersion, strName

    Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
    Set colOS = objWMI.ExecQuery("Select * from Win32_OperatingSystem")

    For Each objOS In colOS
        strName = objOS.Caption
        strVersion = objOS.Version

        ' 根据版本号判断Windows版本
        Select Case True
            Case InStr(strVersion, "10.0") > 0
                GetWindowsVersion = "Windows 10/11 (" & strVersion & ")"
            Case InStr(strVersion, "6.3") > 0
                GetWindowsVersion = "Windows 8.1 (" & strVersion & ")"
            Case InStr(strVersion, "6.2") > 0
                GetWindowsVersion = "Windows 8 (" & strVersion & ")"
            Case InStr(strVersion, "6.1") > 0
                GetWindowsVersion = "Windows 7 (" & strVersion & ")"
            Case InStr(strVersion, "6.0") > 0
                GetWindowsVersion = "Windows Vista (" & strVersion & ")"
            Case InStr(strVersion, "5.2") > 0
                GetWindowsVersion = "Windows XP 64-bit/Server 2003 (" & strVersion & ")"
            Case InStr(strVersion, "5.1") > 0
                GetWindowsVersion = "Windows XP (" & strVersion & ")"
            Case Else
                GetWindowsVersion = strName & " (" & strVersion & ")"
        End Select
    Next

    Set colOS = Nothing
    Set objWMI = Nothing
End Function

' 使用示例
MsgBox GetWindowsVersion(), vbInformation, "Windows版本"

方法5:生成详细报告并保存到文件

' 获取详细系统信息并保存到文件
Sub GetSystemInfoReport()
    Dim objWMI, colOS, objOS
    Dim objFSO, objFile, strReport, strFileName

    Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
    Set colOS = objWMI.ExecQuery("Select * from Win32_OperatingSystem")

    ' 创建报告内容
    strReport = "=== 操作系统信息报告 ===" & vbCrLf & vbCrLf

    For Each objOS In colOS
        strReport = strReport & _
            "操作系统: " & objOS.Caption & vbCrLf & _
            "版本号: " & objOS.Version & vbCrLf & _
            "架构: " & objOS.OSArchitecture & vbCrLf & _
            "Build号: " & objOS.BuildNumber & vbCrLf & _
            "安装日期: " & objOS.InstallDate & vbCrLf & _
            "系统目录: " & objOS.SystemDirectory & vbCrLf & _
            "总物理内存: " & Round(objOS.TotalVisibleMemorySize/1024, 2) & " MB" & vbCrLf & _
            "可用物理内存: " & Round(objOS.FreePhysicalMemory/1024, 2) & " MB" & vbCrLf & _
            "制造商: " & objOS.Manufacturer & vbCrLf & _
            "序列号: " & objOS.SerialNumber & vbCrLf
    Next

    ' 保存到文件
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strFileName = "C:\SystemInfo_" & Replace(Replace(Now(), "/", "_"), ":", "_") & ".txt"
    Set objFile = objFSO.CreateTextFile(strFileName, True)
    objFile.Write strReport
    objFile.Close

    MsgBox "系统信息已保存到: " & strFileName, vbInformation, "完成"

    ' 清理对象
    Set objFile = Nothing
    Set objFSO = Nothing
    Set colOS = Nothing
    Set objWMI = Nothing
End Sub

' 调用函数
GetSystemInfoReport

使用建议:

方法1(WMI) 是最推荐的方式,可以获取最全面的信息 方法4 适合需要识别具体Windows版本(如Win7、Win10等)的场景 方法5 适合需要生成报告或日志的场景 某些情况下可能需要以管理员权限运行才能获取完整信息

这些脚本都可以直接保存为 .vbs 文件,双击或在命令行使用 cscript 命令运行。