加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang读取u盘序列号(通过读取序列号实现)

发布时间:2020-12-16 09:31:07 所属栏目:大数据 来源:网络整理
导读:仅供参考 package mainimport ("fmt""log""os""strconv""strings"registry "github.com/golang/sys/windows/registry")func main() {//查询插入的u盘个数k,err := registry.OpenKey(registry.LOCAL_MACHINE,`SYSTEMCurrentControlSetServicesUSBSTOREnum
仅供参考
package main

import (
	"fmt"
	"log"
	"os"
	"strconv"
	"strings"

	registry "github.com/golang/sys/windows/registry"
)

func main() {
	//查询插入的u盘个数
	k,err := registry.OpenKey(registry.LOCAL_MACHINE,`SYSTEMCurrentControlSetServicesUSBSTOREnum`,registry.QUERY_VALUE)
	if err != nil {
		log.Fatal(err)
	}
	defer k.Close()

	n,_,err := k.GetIntegerValue("Count")
	if err != nil {
		log.Fatal(err)
	}
	if n < 1 {
		fmt.Println("没有检测到u盘!")
		os.Exit(-1)
	}

	//查询u盘序列号
	var sn,pvid,vid,pid string
	information,err := k.GetStringValue(strconv.Itoa(0))
	strn := strconv.FormatUint(n,10) //n是uint64类型,先转成string
	nInt,_ := strconv.Atoi(strn)     //再转成int类型
	if n > 1 {
		fmt.Printf("n检测到多个u盘,按插入顺序输出u盘信息nn")
	}
	for i := 0; i < nInt; i++ {
		information,err = k.GetStringValue(strconv.Itoa(i))
		if err != nil {
			log.Fatal(err)
		}
		sn = strings.Split(information,"")[2]
		pvid = strings.Split(information,"")[1]
		vid = strings.Split(pvid,"&")[0]
		vid = strings.Split(vid,"_")[1]
		pid = strings.Split(pvid,"&")[1]
		pid = strings.Split(pid,"_")[1]
		fmt.Println("当前u盘sn码:",sn)
		fmt.Println("当前u盘vid: ",vid)
		fmt.Println("当前u盘pid: ",pid)
		fmt.Println("")
	}
}


参考链接: https://godoc.org/golang.org/x/sys/windows/registry

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读