如何屏蔽U盘

dali_yan 2013-06-25 09:22:48
软件的主要功能是--插入U盘后首先判断U盘是否已经注册(经过某种处理),如果处理过了就电脑就能够读取U盘,如果没有处理就屏蔽U盘,而且该程序是隐藏运行。 注册这一快大概已经完成,现在的问题是如何屏蔽U盘,初步的想法是通过全局钩子拦截U盘插入消息,然后进行注册判断,如果注册就放行,没注册就拦截。不知道思路对不对,大家能不能给点类似的例子,或者其它思路,谢谢!
...全文
216 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanghailun_ 2013-06-25
  • 打赏
  • 举报
回复
另外参考一下这个...检测u盘接入的,c++ 的,将就着看吧... http://www.codeproject.com/Articles/119168/Hardware-Change-Detection 至于如何禁用未注册的U盘,将未注册的在接入之后又 安全删除,也是一个不错选择。 那就可行了
yanghailun_ 2013-06-25
  • 打赏
  • 举报
回复
这个问题... U盘接入是驱动级(好像是Ring0)的,hook(ring3吧?),你怎么拦截插入消息?禁用驱动?... 用钩子应该不是一个很好思路...且不说实现可行性,仅从效率上,相当于将系统的消息从你的程序进行过滤,系统整体性能上也会受影响。 还有用C#开发这种需求,一定会让你纠结。 还不如在自己的程序中设置一个定时器,每10秒检测一次,每次对比系统磁盘数(既然是U盘,对比盘符数是没有问题,还不影响其他使用USB的设备),当有新的磁盘时,执行你想要的检查。这样就知道了有没有U盘接入,无需绕到钩子上。 至于lz问的如何屏蔽U盘,在不封USB接口的情况下,仅对某一种设备进行特定行操作,我没有去做过这种功能,你是不是可以找找隐藏盘符的API?当接入的是未注册的U盘,你程序将其指定到不可见盘符上(隐藏的)... 个人愚见,仅供参考 参见 http://blog.csdn.net/redming007/article/details/2624992
bigbaldy 2013-06-25
  • 打赏
  • 举报
回复
引用 3 楼 ITbailei 的回复:
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
C#能写吗,是不是C++写的。
引用 4 楼 ITbailei 的回复:
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
而且如果把驱动过滤掉了(可能我理解错了),它是不是过滤掉所有的U盘呢?
这个你程序逻辑里处理就行了,如果U判已注册,那么驱动就放行,没注册就禁止,这就是过滤驱动的作用,过滤驱动是指在原有设备驱动上面加了一层驱动,那么对U盘的读写操作都得先经过你写的驱动才能到达底层驱动,从而实现过滤的目的
bigbaldy 2013-06-25
  • 打赏
  • 举报
回复
引用 3 楼 ITbailei 的回复:
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
C#能写吗,是不是C++写的。
感觉这类东西还是用C写方便,C#应用层里估计做不到
dali_yan 2013-06-25
  • 打赏
  • 举报
回复
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
而且如果把驱动过滤掉了(可能我理解错了),它是不是过滤掉所有的U盘呢?
dali_yan 2013-06-25
  • 打赏
  • 举报
回复
引用 2 楼 bigbaldy 的回复:
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
C#能写吗,是不是C++写的。
bigbaldy 2013-06-25
  • 打赏
  • 举报
回复
写USB过滤驱动,拦截相应的scsi命令即可,推荐你读读《windows驱动开发技术详解》
dali_yan 2013-06-25
  • 打赏
  • 举报
回复
自己顶起,望不吝赐教!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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