很遗憾,GO语言本身不提供获取硬件信息的库,因此我们需要使用系统命令获取信息并解析。
以下是实现该功能的代码示例:
package main
import (
"bufio"
"bytes"
"fmt"
"os/exec"
"regexp"
"strings"
)
func main() {
// 主板型号
board, err := exec.Command("wmic", "baseboard", "get", "Product").Output()
if err != nil {
fmt.Println(err)
return
}
boardModel := strings.TrimSpace(string(board))
// BIOS日期
bios, err := exec.Command("wmic", "bios", "get", "ReleaseDate").Output()
if err != nil {
fmt.Println(err)
return
}
biosDate := strings.TrimSpace(string(bios))
// CPU型号
cpu, err := exec.Command("wmic", "cpu", "get", "Name").Output()
if err != nil {
fmt.Println(err)
return
}
cpuModel := strings.TrimSpace(string(cpu))
// 内存大小
memory, err := exec.Command("wmic", "memorychip", "get", "Capacity").Output()
if err != nil {
fmt.Println(err)
return
}
memorySize := strings.TrimSpace(string(memory))
// 内存频率
frequency, err := exec.Command("wmic", "memorychip", "get", "Speed").Output()
if err != nil {
fmt.Println(err)
return
}
memoryFrequency := strings.TrimSpace(string(frequency))
// 硬盘型号
disk, err := exec.Command("wmic", "diskdrive", "get", "Model").Output()
if err != nil {
fmt.Println(err)
return
}
diskModel := strings.TrimSpace(string(disk))
// 硬盘大小
diskSize, err := exec.Command("wmic", "diskdrive", "get", "Size").Output()
if err != nil {
fmt.Println(err)
return
}
diskSizeValue := strings.TrimSpace(string(diskSize))
// 保存信息到文件
f, err := os.Create("D:\\hw.txt")
if err != nil {