软件注册如果需要绑定硬件,多可文档系统识别机器的BIOS硬件信息给软件授权,如下是linux环境GO语言识别biso代码:
通过运行Linux命令dmidecode 得到硬件信息,需要程序程序有root权限。
package sysinfo
import (
"fmt"
"os/exec"
"runtime"
"strings"
"testing"
)
func RunPipeCmd(name string, arg ...string) (string, error) {
cmd := exec.Command(name, arg...)
// 命令的错误输出和标准输出都连接到同一个管道
stdout, err := cmd.StdoutPipe()
cmd.Stderr = cmd.Stdout
if err != nil {
return "", err
}
if err = cmd.Start(); err != nil {
return "", err
}
builder := new(strings.Builder)
// 从管道中实时获取输出并打印到终端
for {
tmp := make([]byte, 1024)
_, err := stdout.Read(tmp)
builder.WriteString(string(tmp))
if err != nil {
break
}
}
if err = cmd.Wait(); err != nil {
return builder.String(), err
}
//
return builder.String(), nil
}
func BIOS() string {
s, _ := RunPipeCmd("dmidecode", "-t", "1")
arr := strings.Split(s, "\n")
for _, a := range arr {
a = strings.ToLower(a)
//
x := strings.Index(a, "serial number:")
if x >= 0 {
s2 := a[x+14:]
var bios = strings.ReplaceAll(s2, " ", "")
return strings.TrimSpace(bios)
}
}
return ""
}
func TestNtHardware(t *testing.T) {
fmt.Printf("Sn: %s\n", BIOS())
}