golang 获取主板和硬盘序列号以及生成厂家、
时间: 2023-10-15 21:02:22 浏览: 153
要在Golang中获取主板和硬盘的序列号以及生成厂家信息,你可以使用`github.com/StackExchange/wmi`包来访问Windows管理信息(WMI)。下面是一个示例代码:
```go
package main
import (
"fmt"
"github.com/StackExchange/wmi"
)
type Win32_BaseBoard struct {
SerialNumber string
Manufacturer string
}
type Win32_DiskDrive struct {
SerialNumber string
Manufacturer string
}
func main() {
var baseBoard []Win32_BaseBoard
query := "SELECT SerialNumber, Manufacturer FROM Win32_BaseBoard"
err := wmi.Query(query, &baseBoard)
if err != nil {
fmt.Println("Failed to query Win32_BaseBoard:", err)
return
}
var diskDrive []Win32_DiskDrive
query = "SELECT SerialNumber, Manufacturer FROM Win32_DiskDrive"
err = wmi.Query(query, &diskDrive)
if err != nil {
fmt.Println("Failed to query Win32_DiskDrive:", err)
return
}
if len(baseBoard) > 0 {
fmt.Println("主板序列号:", baseBoard[0].SerialNumber)
fmt.Println("主板厂商:", baseBoard[0].Manufacturer)
} else {
fmt.Println("未找到主板信息")
}
if len(diskDrive) > 0 {
fmt.Println("硬盘序列号:", diskDrive[0].SerialNumber)
fmt.Println("硬盘厂商:", diskDrive[0].Manufacturer)
} else {
fmt.Println("未找到硬盘信息")
}
}
```
在上面的示例中,我们定义了`Win32_BaseBoard`和`Win32_DiskDrive`结构体来存储主板和硬盘的信息。然后使用`wmi.Query`函数执行WMI查询,并将结果存储在相应的结构体切片中。
请注意,这段代码只能在Windows系统上运行,并且需要管理员权限才能访问WMI。确保你的代码在具有合适权限的环境中运行。
希望这可以帮助你获取主板和硬盘的序列号以及生成厂家信息!