一个关于检测usb加密狗的简单问题,可否不用ddk?如果解决了,再加100分
需求如下:1.开机的时候,检测加密狗是否插入,如果没有,就弹出提示。
2.可以动态检测加密狗的插入和拔除,并弹出提示。
我在VC和.NET论坛上面也找了相应的资料,大体思路就是遍历usbroot下面的各个接口,检测相应的设备;可以捕获WM_DEVICECHANG事件,来获取usb设备的状态。
实现方法可以通过ddk,也可以通过hid.dll,setupapi.dll等几个库来做。
我现在的问题是:
1.采用hid.dll,setupapi.dll等库的方式做的时候,只能列出系统插入的“PNP设备ID”以“HID\……”开头的设备(采用msinfo32.exe查看-系统摘要》组件-》usb),也就是说以“USB\”或者“PCI\”或者“STOR\”开头的都看不到,我通过程序无法看到优盘,移动硬盘等,只能看到我的IE3.0的微软鼠标,以"HID\"开头的。我就觉得奇怪了。具体程序可以见http://www.lvr.com/hidpage.htm
2.我这里加密狗的牌子有可能是不同的,就是程序可以检测到所有类型加密狗的情况。但是VID,PID好像具体跟公司出产的某个加密狗是相关的。我能不能只写一段通用的程序,就可以判断出所有公司出产的加密狗是否在系统中,也就是加密狗有没有什么共同的ID或者其他什么特征。
小弟对win32以及MFC编程都不是很熟,所以找的一些程序是在.NET上封装usb的一些库来进行调用的。
如下使我找得一些封装usb接口到.NET的例子,但是我运行起来始终无法获取“USB”开头的设备。
http://www.lvr.com/hidpage.htm
http://www.icsharpcode.net/OpenSource/SharpUSBLib/default.aspx
http://msdn.microsoft.com/coding4fun/someassemblyrequired/isthatyou/default.aspx