zoukankan      html  css  js  c++  java
  • 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盘。

  • 相关阅读:
    hrbust 1558 小背包(简单01背包)水坑
    hrbust 1174泉水(DFS深度优先搜索)
    HDU 1115
    HDU 4273
    HDU 2912
    POJ 3528
    HDU 1912
    HDU 4741
    HDU 4617
    POJ 1755
  • 原文地址:https://www.cnblogs.com/sherlock-merlin/p/10197581.html
Copyright © 2011-2022 走看看