当前位置:编程学习 > C#/ASP.NET >>

如何屏蔽U盘

软件的主要功能是--插入U盘后首先判断U盘是否已经注册(经过某种处理),如果处理过了就电脑就能够读取U盘,如果没有处理就屏蔽U盘,而且该程序是隐藏运行。 注册这一快大概已经完成,现在的问题是如何屏蔽U盘,初步的想法是通过全局钩子拦截U盘插入消息,然后进行注册判断,如果注册就放行,没注册就拦截。不知道思路对不对,大家能不能给点类似的例子,或者其它思路,谢谢! u盘 拦截 钩子 --------------------编程问答-------------------- 自己顶起,望不吝赐教! --------------------编程问答-------------------- 写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》 --------------------编程问答--------------------
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
C#能写吗,是不是C++写的。 --------------------编程问答--------------------
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
而且如果把驱动过滤掉了(可能我理解错了),它是不是过滤掉所有的U盘呢? --------------------编程问答--------------------
引用 3 楼 ITbailei 的回复:
Quote: 引用 2 楼 bigbaldy 的回复:

写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
C#能写吗,是不是C++写的。

感觉这类东西还是用C写方便,C#应用层里估计做不到 --------------------编程问答--------------------
引用 3 楼 ITbailei 的回复:
Quote: 引用 2 楼 bigbaldy 的回复:

写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
C#能写吗,是不是C++写的。


引用 4 楼 ITbailei 的回复:
Quote: 引用 2 楼 bigbaldy 的回复:

写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
而且如果把驱动过滤掉了(可能我理解错了),它是不是过滤掉所有的U盘呢?


这个你程序逻辑里处理就行了,如果U判已注册,那么驱动就放行,没注册就禁止,这就是过滤驱动的作用,过滤驱动是指在原有设备驱动上面加了一层驱动,那么对U盘的读写操作都得先经过你写的驱动才能到达底层驱动,从而实现过滤的目的 --------------------编程问答-------------------- 这个问题...


U盘接入是驱动级(好像是Ring0)的,hook(ring3吧?),你怎么拦截插入消息?禁用驱动?...

用钩子应该不是一个很好思路...且不说实现可行性,仅从效率上,相当于将系统的消息从你的程序进行过滤,系统整体性能上也会受影响。

还有用C#开发这种需求,一定会让你纠结

还不如在自己的程序中设置一个定时器,每10秒检测一次,每次对比系统磁盘数(既然是U盘,对比盘符数是没有问题,还不影响其他使用USB的设备),当有新的磁盘时,执行你想要的检查。这样就知道了有没有U盘接入,无需绕到钩子上。

至于lz问的如何屏蔽U盘,在不封USB接口的情况下,仅对某一种设备进行特定行操作,我没有去做过这种功能,你是不是可以找找隐藏盘符的API?当接入的是未注册的U盘,你程序将其指定到不可见盘符上(隐藏的)...
个人愚见,仅供参考
参见 http://blog.csdn.net/redming007/article/details/2624992 --------------------编程问答-------------------- 另外参考一下这个...检测u盘接入的,c++ 的,将就着看吧...
http://www.codeproject.com/Articles/119168/Hardware-Change-Detection

至于如何禁用未注册的U盘,将未注册的在接入之后又 安全删除,也是一个不错选择。
那就可行了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,