• golang获取u盘序列号(通过读取注册表实现)


    仅供参考
    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("
    检测到多个u盘,按插入顺序输出u盘信息
    
    ")
    	}
    	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

    20190318更新,此方法不适于慧荣主控的u盘。

  • 相关阅读:
    sfs2x 连接 mongodb
    java websocket
    webstorm 4.0 注册码
    解决 sfs2 admin tool 找不到扩展
    window 注册表五大类
    opengl 学习第二日
    java google Protobuf
    扩展 java sencha touch PhonegapPlugin
    sencha touch2 kryonet socket phonegap 通信 作者:围城
    sencha touch2 layout 笔记
  • 原文地址:https://www.cnblogs.com/sherlock-merlin/p/10197581.html
Copyright © 2020-2023  润新知