feat(hardware): 自 go-hua 迁入硬件信息采集与变更检测
- WMI 采集主板/BIOS/显卡/内存/CPU/硬盘等 11 类设备 + 变更比对 - 新增依赖 gopsutil/yusufpapurcu/wmi, 附测试、例程与 README
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
//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
|
||||
}
|
||||
Reference in New Issue
Block a user