我想知道如何获取有关 PC和BIOS 的完整信息。我发现了这篇文章 - https://groups.google.com/forum/#!msg/golang-nuts/pKuFQxAy4P4/62FnqGON1pEJ
代码:
package main
import (
"fmt"
"github.com/ochapman/godmi"
)
func main(){
BS:=godmi.GetBIOSInformation()
fmt.Println("BS:",BS)
sys:=godmi.GetSystemInformation()
fmt.Println("sys:",sys)
BB:=godmi.GetBaseboardInformation()
fmt.Println("BB:",BB)
}
我无法编译,因为有错误:
# github.com/ochapman/godmi
go\src\github.com\ochapman\godmi\godmi.go:674:13: undefined: syscall.Mmap
go\src\github.com\ochapman\godmi\godmi.go:674:79: undefined: syscall.PROT_RE
go\src\github.com\ochapman\godmi\godmi.go:674:98: undefined: syscall.MAP_SHA
go\src\github.com\ochapman\godmi\godmi.go:680:8: undefined: syscall.Munmap
据我所知,只有 Linux ,对于 Windows ,我根本找不到类似的东西。 可以吃另类吗?
答案 0 :(得分:2)
(很抱歉绕道而行,但我想我必须这样做。)
你从错误的角度攻击你的问题。 编程不是寻找随机包,尝试它, 看到它失败并寻求帮助; 它相当于发明解决问题的一般方法 在手边,然后试图弄清楚有什么可以解决它。
例如,在您的情况下,它可能很容易变得富有成效 搜索" BIOS +信息+ golang"因为它太窄了。
相反,试着找出
虽然这很无聊,但我还是建议阅读 this认真对待:这真的会有所帮助 你解决了未来的编程挑战。
好的,现在回到你的问题。
在Windows上,获取系统信息的标准方法 正在查询所谓的Windows Management Instrumentation (or WMI for short)子系统。
一旦你知道这一点,你应该深入研究这两个方向:
您需要执行哪些WMI调用才能获取信息 这是你感兴趣的。
这个很容易搜索。 我做的第一个打击是this 我说的是一个非常好的开始。
如何从Go进行WMI调用。
这可以通过两种方式完成:
手动直接实施。 Go具有非常好的内置支持,可动态加载Windows DLL 并从中调用函数。
This是对基本概念的良好展示。
使用现成的包装。
同样,快速搜索会产生github.com/StackExchange/wmi
。
所以,如果我是你,我首先编写WMI调用适合我需要的任何代码 在WSH上使用VBS或JScript(或诸如此类的东西) 然后"移植"使用任何描述的方法解决Go的问题。