C++ 禁用USB移动存储设备而不禁用鼠标,键盘等输入设备

现在很多公司为了防止泄密,都需要禁用USB移动存储设备的接口,在网上看了很多方法,只能说大都是治标不治本,而且稳定性也很差,用户也可以去修改。先罗列一下网上的一些方法。

 

1.修改注册表项,禁用usb移动存储设备

2.隐藏可分配给usb移动存储设备的盘符并禁止查看 

3.禁止安装usb驱动程序 

4.修改组策略文件隐藏usb移动设备盘符 

 

目前网上大都是这4种方式,先来说说他们的原理。

第1,2种方法,都是修改注册表USB服务的值,不显示USB的盘符,实现我们要的效果。

第3种方法,是修改系统目录下inf USB驱动文件的访问权限,也就是说,每次当U盘插入的时候,会去读取这个文件,这里的原理是把这个驱动文件的权限给改了,每次U盘插入的时候,去读取的时候,读不出这个文件,也就无法访问U盘的效果。

第4种方法,修改策略,不显示盘符,只适合winxp以下的版本系统。

 

以上是目前网上禁用USB接口的原理,再来说说他们的缺点。

1.以上4种方式的一个共同缺点,必须在用户使用电脑之前将这些设置修改掉,否则无效。假如,这些参数没改之前,用户是可以使用移动设备的,通过手动或者程序去修改这些参数,移动存储设备必须要拨出,再插入才有效果,也就是不能动态控制用户移动存储设备的权限。

 

2.这4种方式,稍微懂点电脑常识的人,都能从百度上找到,也就是逆操作,把这些设置改回去,这些禁用不就隔屁了(除非对这些设置的东西,做一个保护,但是一但做了保护,就不能动态控制用户能否操作);

 

言归正传,说说我方法的思路。

先说说原理,不同的USB硬件类型的服务是不一样的,比如说USB移动存储设备的服务:USBSTRO,USB鼠标:USBHUB,连上一些手机的非存储类型:USBCCGP(有些手机连接上之后,可以选择几种类型,我的手机上有相机(PTP),媒体设备(MTP),USB存储设备,经测试前2者都是USBCCGP这个服务,后者是USBSTRO服务)。

(这些服务都可以通过设备管理器来查看)

 

未完待续。。。

 

你可能感兴趣的:(C++)