//go:build windows package hardware import ( "github.com/yusufpapurcu/wmi" ) // https://learn.microsoft.com/zh-cn/windows/win32/cimwin32prov/computer-system-hardware-classes // GetBaseBoardInfo 主板信息 func GetBaseBoardInfo() ([]BaseBoard, error) { info := make([]BaseBoard, 0) err := wmi.Query("SELECT * FROM Win32_BaseBoard WHERE (Product IS NOT NULL)", &info) if err != nil { return nil, err } return info, nil } // GetBiosInfo BIOS信息 func GetBiosInfo() ([]Bios, error) { info := make([]Bios, 0) err := wmi.Query("SELECT * FROM Win32_BIOS WHERE (Name IS NOT NULL)", &info) // WHERE (BIOSVersion IS NOT NULL) if err != nil { return nil, err } return info, nil } // GetVideoControllerInfo 显卡信息 func GetVideoControllerInfo() ([]VideoController, error) { info := make([]VideoController, 0) err := wmi.Query("SELECT * FROM Win32_VideoController WHERE (Name IS NOT NULL)", &info) // WHERE (BIOSVersion IS NOT NULL) if err != nil { return nil, err } return info, nil } // GetPhysicalMemoryInfo 物理内存 func GetPhysicalMemoryInfo() ([]PhysicalMemory, error) { info := make([]PhysicalMemory, 0) err := wmi.Query("SELECT * FROM Win32_PhysicalMemory", &info) if err != nil { return nil, err } return info, nil } // GetProcessorInfo 处理器 func GetProcessorInfo() ([]Processor, error) { info := make([]Processor, 0) err := wmi.Query("SELECT * FROM Win32_Processor", &info) if err != nil { return nil, err } return info, nil } // GetDiskDriveInfo 硬盘 func GetDiskDriveInfo() ([]DiskDrive, error) { info := make([]DiskDrive, 0) err := wmi.Query("SELECT * FROM Win32_DiskDrive", &info) if err != nil { return nil, err } return info, nil } // GetSoundDeviceInfo 声卡 func GetSoundDeviceInfo() ([]SoundDevice, error) { info := make([]SoundDevice, 0) err := wmi.Query("SELECT * FROM Win32_SoundDevice", &info) if err != nil { return nil, err } return info, nil } // GetNetworkAdapterInfo 网卡 func GetNetworkAdapterInfo() ([]NetworkAdapter, error) { info := make([]NetworkAdapter, 0) err := wmi.Query("SELECT * FROM Win32_NetworkAdapter WHERE PhysicalAdapter = TRUE", &info) if err != nil { return nil, err } return info, nil } // GetDesktopMonitorInfo 显示器 func GetDesktopMonitorInfo() ([]DesktopMonitor, error) { info := make([]DesktopMonitor, 0) err := wmi.Query("SELECT * FROM Win32_DesktopMonitor", &info) if err != nil { return nil, err } return info, nil } // GetPointingDeviceInfo 鼠标 func GetPointingDeviceInfo() ([]PointingDevice, error) { info := make([]PointingDevice, 0) err := wmi.Query("SELECT * FROM Win32_PointingDevice", &info) if err != nil { return nil, err } return info, nil } // GetKeyboardInfo 键盘 func GetKeyboardInfo() ([]Keyboard, error) { info := make([]Keyboard, 0) err := wmi.Query("SELECT * FROM Win32_Keyboard", &info) if err != nil { return nil, err } return info, nil } // GetHardwareInfo 通过 WMI 采集整机硬件信息 func GetHardwareInfo() (Hardware, error) { hardware := Hardware{} hardware.BaseBoard, _ = GetBaseBoardInfo() hardware.Bios, _ = GetBiosInfo() hardware.VideoController, _ = GetVideoControllerInfo() hardware.PhysicalMemory, _ = GetPhysicalMemoryInfo() hardware.Processor, _ = GetProcessorInfo() hardware.DiskDrive, _ = GetDiskDriveInfo() hardware.SoundDevice, _ = GetSoundDeviceInfo() hardware.NetworkAdapter, _ = GetNetworkAdapterInfo() hardware.DesktopMonitor, _ = GetDesktopMonitorInfo() hardware.PointingDevice, _ = GetPointingDeviceInfo() hardware.Keyboard, _ = GetKeyboardInfo() return hardware, nil }