C#获取U盘序列号的方法
作者:蓝图 发布时间:2023-09-15 02:09:54
标签:C#,U盘,序列号
本文实例讲述了C#获取U盘序列号的方法。分享给大家供大家参考。具体如下:
using System.Management;
private List<string> _serialNumber = new List<string>();
/// <summary>
/// 调用这个函数将本机所有U盘序列号存储到_serialNumber中
/// </summary>
private void matchDriveLetterWithSerial()
{
string[] diskArray;
string driveNumber;
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");
foreach (ManagementObject dm in searcher.Get())
{
getValueInQuotes(dm["Dependent"].ToString());
diskArray = getValueInQuotes(dm["Antecedent"].ToString()).Split(',');
driveNumber = diskArray[0].Remove(0, 6).Trim();
var disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject disk in disks.Get())
{
if (disk["Name"].ToString() == ("\\\\.\\PHYSICALDRIVE" + driveNumber) & disk["InterfaceType"].ToString() == "USB")
{
_serialNumber.Add(parseSerialFromDeviceID(disk["PNPDeviceID"].ToString()));
}
}
}
}
private static string parseSerialFromDeviceID(string deviceId)
{
var splitDeviceId = deviceId.Split('\\');
var arrayLen = splitDeviceId.Length - 1;
var serialArray = splitDeviceId[arrayLen].Split('&');
var serial = serialArray[0];
return serial;
}
private static string getValueInQuotes(string inValue)
{
var posFoundStart = inValue.IndexOf("\"");
var posFoundEnd = inValue.IndexOf("\"", posFoundStart + 1);
var parsedValue = inValue.Substring(posFoundStart + 1, (posFoundEnd - posFoundStart) - 1);
return parsedValue;
}
调用方法:
matchDriveLetterWithSerial();
string[] aa = _serialNumber.ToArray();
for (int i = 0; i < aa.Length; i++)
{
aa[i].ToString(); //这里就可以拿出现在所有的U盘序列号
}
希望本文所述对大家的C#程序设计有所帮助。


猜你喜欢
- 本文为大家分享了WebSocket实现Web聊天室的具体代码,供大家参考,具体内容如下一.客户端JS代码如下:/* * 这部分
- 直接来,RequestDemo5代码,get请求和post请求都请求转发了,转发到RequestDemo6请求 RequestDe
- 服务端:using System;using System.Collections.Generic;using System.Net;usi
- 本文实例讲述了Java字符流与字节流区别与用法。分享给大家供大家参考,具体如下:字节流与字符流主要的区别是他们的的处理方式流分类:1.Jav
- java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。在Java类库
- Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。Problem: 拍好照片,点击裁剪,弹Toast“无法加载
- 前言JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名。为了解决ZIP
- 依赖添加<dependency> <groupId>org.springframework.boot&l
- 一、文件的编码package com.study.io;/*** 测试文件编码*/public class EncodeDemo {/***
- 起源最近公司要做多租户,Mybatis-Plus的多租户插件很好用,但是有一个场景是:字典表或者某些数据表,一些数据需要在各个租户之间共享,
- 1、打开侧面的maven,点击图中箭头指向的图标。2、出现如下弹窗,在Command line在中输入执行的指令。指令格式:install:
- 一个请求从客户端发出到达服务器,然后被处理的整个过程其实是非常复杂的。本博客主要介绍请求到达服务器被核心组件DispatcherServle
- 一、问题描述上周不是搭了个SpringBoot整合sharding-jdbc分库分表的架子么,组里老哥不让我把开发环境的配置文件放到reso
- 最近做了一个功能,里面涉及到了渐变圆形的需求。就是一个颜色可以渐变的圆环,最后实现的效果如下图:左图是带渐变效果,右图是不带渐变效果。原理还
- 目录MeasureSpecLayoutParamViewViewGroupTextColumn使用总结
- 在 .NET 5.0 的发布中,不仅统一了框架,微软还在C#9.0中推出了一些新特性。本版本中,印象深刻的功能:Init-only sett
- 模糊查询Spring Data Jpa的使用可以减少开发者对sql语句的编写,甚至完全不需要编写sql语句。但是,开发过程中总会遇到各种复杂
- 本文实例讲述了Java中对象的比较操作。分享给大家供大家参考,具体如下:一 点睛在Java中,有两种方式可用于对象间的比较:利用"
- 以下是代码:package cn.study.concurrency.ch11;/** * 锁分段 * @author xiaof * */
- 前言在项目中,如果我们要遵循分层领域模型规约: 话,肯定避免不了在DTO、VO、BO、AO、VO、Query等实体的转换,我们通常有几种做法