软件注册如果需要绑定硬件,多可文档系统识别机器的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())  

  

}