首页
社区
课程
招聘
[求助] 震惊!为什么windows xp获取U盘序列号为空!
发表于: 2019-2-27 19:29 4769

[求助] 震惊!为什么windows xp获取U盘序列号为空!

2019-2-27 19:29
4769

今天在尝试做一个U盘白名单的小功能,发现无论是驱动层还是应用层,xp下都获取不到U盘的序列号。

使用IoBuildDeviceIoControlRequest构建IRP,将PropQuery.PropertyId 与 PropQuery.QueryType 分别设为 StorageDeviceProperty与
PropertyStandardQuery,得到返回的outputbuffer就是U盘各种信息的结构体,但结构体中存储的都是一个偏移量。我通过地址与偏移截取
出每一段的数据,但我发现在XP下调试时SerialNumberOffset为0,也就是没有这个序列号,通过查看内存上的内容也发现与win7 64位相比,
内存上的确缺少了这个序列号的值。接着我以为是驱动层的原因,我又尝试了相同的方式在应用层使用DeviceIoControl获得U盘信息,发现
结果与驱动层一样。

同样的获取方式,为什么在win7下正常,但在XP下反而少了这个数据?
那XP下获取U盘序列号应该用什么方法呢?

xp下:


其他系统:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-2-27 19:30 被只想睡个好觉编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 6124
活跃值: (4666)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
cmd 命令测试
2019-2-27 21:19
0
雪    币: 1914
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
黑洛 cmd 命令测试
我需要的是U盘出厂时所带的序列号,不是卷序列号
2019-2-28 08:23
0
雪    币: 6124
活跃值: (4666)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
只想睡个好觉 我需要的是U盘出厂时所带的序列号,不是卷序列号
那就是很明显的原因:缺
2019-2-28 11:25
0
雪    币: 298
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个问题解决了吗?server 2003 和XP都获得不到U盘的物理序列号
2019-7-4 09:42
0
雪    币: 7092
活跃值: (2988)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大头NumOne 这个问题解决了吗?server 2003 和XP都获得不到U盘的物理序列号
设备管理器属性里 也看不到信息吗
2019-7-4 10:19
0
雪    币: 298
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
shuyangzjg 设备管理器属性里 也看不到信息吗
我找了方法可以去注册表里去取值,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Disk\Enum,但是目前对于USB2.0的U盘获得U盘序列号是错误的
2019-7-5 17:07
0
雪    币: 27
活跃值: (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

先试试命令行敲一下:

wmic DiskDrive get Caption, SerialNumber, Size
看看能否获取到序列号。如果不能的话,那基本上也没办法了。

2019-7-5 17:36
0
雪    币: 192
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
usb2.0u盘普遍有这个问题,我最近也在搞,win7下很多2.0的u盘的SerialNumberOffset都是乱的,还是别用这办法吧……我反正转卷标处理了,搭配应用层做识别
2019-7-6 09:22
0
游客
登录 | 注册 方可回帖
返回
//