怎么用程序得到U盘的序列号?(是硬件序列号,不是卷号,急,顶者有分,谁回答出来再另开贴给分)

zblaoshu1979 2004-10-11 03:36:35
我是这个思路,大家看看对不对
用这个GUID:53f56307-b6bf-11d0-94f2-00a0c91efb8b
首先 SetupDiGetClassDevs
然后 SetupDiEnumDeviceInterfaces
再 SetupDiGetDeviceInterfaceDetail可以得到一个设备路径,用这个设备路径可以CreateFile打开设备得到句柄,然后用这个句柄用DeviceIoControl函数得到Serial number
结构:IOCTL_STORAGE_QUERY_PROPERTY,可是只能得到硬盘的Serial number,就是得不到U盘的Serial number,这是为什么?
...全文
1142 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zblaoshu1979 2004-10-13
  • 打赏
  • 举报
回复
谢谢Microsnow(冰火) ,结贴。
Joe 2004-10-13
  • 打赏
  • 举报
回复
DDK中的例子要在VC中编译,需设置VC的一些环境参数.至于具体怎么操作,你可以到网上搜索一下,这方面的资料应该很多.祝你成功!
Joe 2004-10-12
  • 打赏
  • 举报
回复
zblaoshu1979(周博):你有DDK吗?在DDK里面就有一个Sample叫做USBView,你可以参考它的源代码.因为
zblaoshu1979 2004-10-12
  • 打赏
  • 举报
回复
Microsnow(冰火):
谢谢你给提供的方法,我想问一下,用DDK对USB设备访问具体要怎么操作呢?
Joe 2004-10-12
  • 打赏
  • 举报
回复
其实根据你的思路,再增加几个动作是可以获得USB Mass Storage Device的Serial Number的.
如果是我,我的方法有两个:
(1)通过驱动程序来向硬件发送命令,这样可以得到存储装置设备实例的Device Instance IDs,这个东西类似于下面的字符串:
硬盘:PCIIDE\IDECHANNEL\4&E3EC092&0&0
USB存储器:USB\VID_04A5&PID_6130\0002F0EB6D990414
像0002F0EB6D990414就是你所要的Serial Number.
(2)用DDK直接对USB设备进行访问,可以得到它.
zblaoshu1979 2004-10-12
  • 打赏
  • 举报
回复
读注册表到是个可行的方案,但是我要确定当前的U盘(比如盘符是I)对应的注册表里面的哪个序列号呀
Mr-Chen 2004-10-12
  • 打赏
  • 举报
回复
那你读注册表不行吗?
sungengyu 2004-10-12
  • 打赏
  • 举报
回复
up
zblaoshu1979 2004-10-12
  • 打赏
  • 举报
回复
PID和VID是哪个,举个例子行吗?
roger_ding 2004-10-12
  • 打赏
  • 举报
回复
U盘不一定有序列号,而且那个不是规定需要有的,但是一定有PID和VID,根据这两个也可以判断
zblaoshu1979 2004-10-12
  • 打赏
  • 举报
回复
麻烦大家帮忙看一下呀
zblaoshu1979 2004-10-12
  • 打赏
  • 举报
回复
非常感谢 Microsnow(冰火)
在结贴之前我再问你个问题,怎么把USBVIEW在VC中编译?(我是用DDK编译的)
Joe 2004-10-12
  • 打赏
  • 举报
回复
DDK里面的USBView你已经编译通过了,这样很好.之所以会出现:iSerialNumber: 0x03,那是因为你没有对设备进行Config Descriptors.你可以试着做一个动作:
启动USBView.exe后,把USB设备插上去.在"Options"菜单下选中"Config Descriptors"项,然后再到"File"菜单下,点击"Refresh F5"子菜单项,这样Serial Number就会看到了.
以下是我看到的结果:
Device Descriptor:
bcdUSB: 0x0110
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 (64)
idVendor: 0x04A5 (Acer Peripherals Inc.)
idProduct: 0x6130
bcdDevice: 0x1001
iManufacturer: 0x01
0x0409: "<USB MF>"
iProduct: 0x02
0x0409: "<USB PRODUCT> "
iSerialNumber: 0x03
0x0409: "0002F0EB6D9C050B"
bNumConfigurations: 0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x02
Open Pipes: 2

Endpoint Descriptor:
bEndpointAddress: 0x81
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00

Endpoint Descriptor:
bEndpointAddress: 0x02
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00

Configuration Descriptor:
wTotalLength: 0x0020
bNumInterfaces: 0x01
bConfigurationValue: 0x01
iConfiguration: 0x04
0x0409: "USB/MSC LCD Player"
bmAttributes: 0x80 (Bus Powered )
MaxPower: 0x32 (100 Ma)

Interface Descriptor:
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x08
bInterfaceSubClass: 0x06
bInterfaceProtocol: 0x50
iInterface: 0x05
0x0409: "Internal Device"

Endpoint Descriptor:
bEndpointAddress: 0x81
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00

Endpoint Descriptor:
bEndpointAddress: 0x02
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00
xmzh 2004-10-12
  • 打赏
  • 举报
回复
up
zblaoshu1979 2004-10-12
  • 打赏
  • 举报
回复
有DDK,也看了USBView,但是没怎么看明白,他得到的
Device Descriptor:
bcdUSB: 0x0110
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 (64)
idVendor: 0x0EA0
idProduct: 0x6803
bcdDevice: 0x0100
iManufacturer: 0x01
iProduct: 0x02
iSerialNumber: 0x03
bNumConfigurations: 0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x02
Open Pipes: 3

Endpoint Descriptor:
bEndpointAddress: 0x81
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00

Endpoint Descriptor:
bEndpointAddress: 0x02
Transfer Type: Bulk
wMaxPacketSize: 0x0040 (64)
bInterval: 0x00

Endpoint Descriptor:
bEndpointAddress: 0x83
Transfer Type: Interrupt
wMaxPacketSize: 0x0002 (2)
bInterval: 0x01

iSerialNumber: 0x03是什么意思呀?
zblaoshu1979 2004-10-11
  • 打赏
  • 举报
回复
lixiaosan(小三):
是的,有的品牌U盘没有,但有的U盘的确有呀
希望大家多多帮忙
lixiaosan 2004-10-11
  • 打赏
  • 举报
回复
不一定有
zblaoshu1979 2004-10-11
  • 打赏
  • 举报
回复
有的[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Netac&Prod_OnlyDisk&Rev_1.11\221D19FD3D8E6261&0]

221D19FD3D8E6261就是硬件ID了

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_____&Prod______&Rev_4.00\1F3312000265&0]

1F3312000265就是硬件ID了
agua06 2004-10-11
  • 打赏
  • 举报
回复
不好意思,偶先提个问题,U盘有像硬盘一样的Serial number么?
方法一,BIOS设置法(快刀斩乱麻法)     进入BIOS设置,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Controller”和“USB 2.0 Contr01ler”选项的属性设置为“Disableed”,即可禁用USB接口。最后别忘记给BIOS设置上一个密码,这样他人就无法通过修改注册表解“锁”上述设备了。     注意:这个方法是完全禁止了USB接口,也就是说各种USB接口的设备均不能用了,当然也包括了U盘和移动盘。由于此法过于霸道,请慎用。     方法二,禁止闪盘或移动硬盘的启动(适用于Windows XP/2000/2003)     打开注册表编辑器,依次展开如下支[HKEY_LOCAL_MACHINE\SYSTEM\CurrentCntrolSet\Services\USBSTOR],在右侧的窗格中找到名为“Start”的DWORD值,双击,在弹出的编辑对话框中将其数值数据修改为十六位进制数值“4”。点“确定”按钮并关闭注册表编辑器,重新启动计算机,使设置生效。重启后,当有人将USB存储设备连接到计算机时,虽然USB设备上的指示灯在正常闪烁,但在资源管理器当中就是无法找到其盘符,因此也就无法使用USB设备了。   方法三,隐藏盘符和禁止查看(适用于Windows系统)     打开注册表编辑器,依次展开如下支[HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Ploicies\Explorer],新建二进制值“NoDrives”,其缺省值均是00 00 00 00,表示不隐藏任何驱动器。键值由四个字节组成,每个字节的每一位(bit)对应从A:到Z:的一个盘,当相应位为1时,“我的电脑”中相应的驱动器就被隐藏了。第一个字节代表从A到H的8个盘,即01为A,02为B,04为C……依次类推,第二个字节代表I到P,第三个字节代表Q到X,第四个字节代表Y和Z。比如要关闭C盘,将键值改为04 00 00 00;要关闭D盘,则改为08 00 00 00,若要关闭C盘和D盘,则改为0C 00 00 00(C是十六进制,转成十进制就是12)。  理解了原理后,下面以我的电脑为例说明如何操作:我的电脑有一个软驱、一个硬盘(5个区)、一个光驱,盘符布是这样的:A:(3.5软盘)、C:、D:、E:、F:、G:、H:(光盘),所以我的“NoDrives”值为“02 ff ff ff”,隐藏了B、I到Z盘。     重启计算机后,再插入U盘,在我的电脑里也是看不出来的,但在地址栏里输入I:(我的电脑电后一个盘符是H)还是可以访问移动盘的。到这里大家都看得出“NoDrives”只是障眼法,所以我们还要做多一步,就是再新建一个二进制“NoViewOnDrive”,值改为“02 ff ff ff”,也就是说其值与“NoDrives”相同。 这样一来,既看不到U盘符也访问不到U盘了。     方法四,禁止安装USB驱动程序     在Windows资源管理器中,进入到“系统盘:\WINDOWS\inf”目录,找到名为“Usbstor.pnf”的文件,右键点击该文件,在弹出菜单中选择“属性”,然后切换到“安全”标签页,在“组或用户名称”框中选中要禁止的用户组,接着在用户组的权限框中,选中“完全控制”后面的“拒绝”复选框,最后点击“确定”按钮。     再使用以上方法,找到“usbstor.inf”文件并在安全标签页中设置为拒绝该组的用户访问,其操作过程同上。完成了以上设置后,该组中的用户就无法安装USB设备驱动程序了,这样就达到禁用的目的。     注意:要想使用访问控制列表(ACL),要采用NTFS文件系统。     结束语     正所谓乱花渐欲迷人眼,经过以上四个步骤,就算是个中高手,想查找突破防线也要大费周折了,有时候解决问题不一定是找别人提供的解决方案,那是要钱的。对于老板来说要钱就等于要他的命,呵呵,还是自己想法子解决吧。
英文名称:Xplorer2 Pro V1.7.0.5 软件开发商:zabkat 语言:简体中文汉化版 软件介绍: 当你使用windows自带资源管理器你会不会感觉有很严重的延迟呢,相信这是很频繁的事,xplorer可以解决这个问题,该软件采用双面板设计,你可以将自己想用的功能和频繁访问的文件夹放在工具栏上,可以以非常集成的方式快速管理你电脑里的资源,永远都只有一个窗口,避免窗口扎堆,不论你的电脑是多么杂乱,总是可以得心应手。另一方面,该软件界面非常的简单,甚至让人觉得功能很少,其实核心功能一点不少,但不至于像类似total commander这样的管理器太过花哨和繁杂而让人无所适从,也正因为如此它也更加迅速高效,这个软件简直就是古董机和喜欢蹂躏硬盘的朋友的福音! 特色功能有: 1,在两个面板的文件夹绝对路径上右击任何一级目录可以快速跳转,当你访问一个具有大量文件夹的文件夹时(如system32),可以用来列出目录,这和windows vista和7的功能是一样的,不过这个更加好用。 2,扩展名过滤,相信很多人的下载目录,mp3,手机,u盘里的文件都是乱七八糟的,该功能可以将你想看的电影,音乐,文档等单独列出。 3,粘滞选择,为了选多个文件按着ctrl是个技术活不,我觉得是的,不过现在不需要这样啦。 4,增强的复制,移动,通过点击复制到,移动到,可以实现面板间的拷贝,移动,还可以精确快速的显示速度和时间(这方面是vista和7没法比的)。 5,两个面板都支持多标签,满足你的多开需求 其实还有很多高级功能,不过我还没有研究,以上觉得是最实用的功能。 安装方法: 传的是个winrar自解压包,随便找个地方解压下,双击setup安装即可,附带序列和pdf帮助文件(英文的帮助文件,默认安装无帮助文件,不需要的删除就行了),最后,强烈推荐将该程序设为开机自启动! tips:重装系统后再安装xplorer后又要重新定制工具栏,这是个很麻烦的事,实际上可以把自己的设置导出为注册表文件,下次重装后导入注册表即可免去再设置之苦! 方法:点击操作菜单——导出设置

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧