石喜富,杨俊生,石增天
(1,2.中国传媒大学计算机与网络中心,北京 100024;3.北京邮电大学国际学院,北京 102209)
Windows环境下禁用USB存储设备程序设计与实现
石喜富1,杨俊生2,石增天3
(1,2.中国传媒大学计算机与网络中心,北京 100024;3.北京邮电大学国际学院,北京 102209)
提供了USB存储设备驱动的工作原理,并用C语言在Windows XP操作系统中实现了禁用和启用USB存储设备的同时并不影响其他USB设备的使用。
Windows XP操作系统;禁用USB存储设备;软件实现;计算机房;管理
Microsoft win2k,winxp,win7 等操作系统由于其运行稳定、可靠、速度快并且具有良好的用户体验,因此应用比较广泛。在Windows XP运行平台支持下,USB(UniversalSerial Bus,通用串行总线)具有连接单一化、即插即用、支持热插拔等特点,简化了PC和外围设备的连接过程,所以,USB接口存储器的使用也很普及。在某些环境下需要禁用USB存储设备,例如:使用计算机进行的各种无纸化考试,为了防止考题泄露、考生作弊和计算机病毒侵入考试系统就需要禁用USB存储设备的同时让鼠标等其它USB接口设备工作正常。
本文使用C语言设计了应用程序,通过修改USB设备驱动程序和Windows注册表的方法,用软件手段实现了禁用USB存储设备的同时让其它USB接口设备工作正常的目标;在需要USB存储设备时又可以方便恢复使用。实现了在Windows环境下,设备管理者根据需要,方便的禁用和启用USB存储设备的目的。
在Windows操作系统下,计算机的USB接口、支持热插拔,具有即插即用的特点,要想禁用USB存储设备又要保证其他USB接口的设备工作正常,需要做两项工作:即修改注册表中的键值和修改USB设备驱动程序usbstor.inf中的键值,二者缺一不可。
注册表中HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTOR下的Start键值默认为3,当该键值为3时,USB存储设备工作正常;当此键值为4时,USB存储设备被禁用,但是其它USB接口设备工作仍正常。以后本文中提到的Start键值均为这里的键值,不在另外说明。
对于一台个人计算机,当其Start键值改为 4后,只能保证该计算机已经使用过的USB存储设备不能再使用,因为,已使用过的的USB存储设备再次插入USB接口,USB设备驱动程序不再检查和安装驱动程序,因而不被识别;但从未在此计算机上使用过的的USB存储设备插入USB接口时,Windows操作系统USB设备驱动程序usbstor.inf将自动检查和安装USB设备驱动程序,同时会自动将Start键值改回3,此时所有USB存储设备均可用。因此要完全禁用USB存储设备,还需要手动修改USB设备驱动程序usbstor.inf中的键值。
为了解释修改USB设备驱动程序usbstor.inf中的键值的原因,首先需要了解Windows XP系统及其WDM驱动程序。
2.2.1 Windows XP系统及其WDM驱动程序简单介绍
Windows XP运行平台支持两种模式:用户模式和内核模式。用户模式下,应用程序接口调用函数在一些例程的帮助下可完成向设备读写数据功能。操作系统创建一个称为I/O请求包(IRP)的数据结构,并将IRP送入设备驱动的一个入口点。而在内核模式下,设备驱动执行IRP并最终完成与硬件的数据访问。驱动程序工作于内核模式,既可以直接访问硬件,也可以通过硬件抽象层提供的一些功能实现对硬件的访问。
WDM(Windows Driver Mode,Windows驱动程序模型)是Microsoft推出的一种驱动程序模型,由运行于内核模式的系统级代码组成,在应用程序和设备之间采用分层驱动的方法,其中包含三种类型的驱动程序,其可能的一种结构如图1所示。
图1WDM驱动程序结构
过滤驱动程序用于过滤向设备、设备类或总线I/O发送请求,可服务于多个设备,还可进一步划分,这部分是可选的。总线驱动程序负责驱动I/O总线,处理总线上的全部事务,控制对其总线所有设备的访问。功能驱动程序用于驱动一个单独的设备,控制并实现该设备的主要功能。
2.2.2 USB存储设备驱动文件usbstor.inf简单介绍
USB设备所采用的驱动程序是一种典型的WDM驱动程序。在WDM驱动程序中,即插即用管理器(PnP)负责通知操作系统何时添加(或删除)设备,并使用INF(Device Information File,设备信息文件)文件来查找新设备的驱动程序。
INF是 Information File的缩写,是微软公司为硬件设备制造商发布其设备驱动程序而开发的,许多硬件设备的驱动程序都是使用.INF文件来安装的。.INF文件从Windows3.X时代就开始大量被使用了。.INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然.INF只是纯文本文件,但是当我们在Windows操作系统运行环境下对.INF文件按鼠标右键后,在右键菜单上就会出现“安装I”命令,这是因为微软公司已在其操作系统 Windows中内置提供了 Setup API解析INF脚本文件,我们只需用文本编辑软件编写.INF文件,便可完成大部份的安装工作,所以尤其是在软体的大小并不是很大的情况下,安装工作不是很复杂的时候,使用.INF文件来进行安装工作将会是一个较好选择。而且如果要安装设备驱动程序,.INF文件是目前唯一的选择。.INF文件可以提供有限的平台独立性,并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安装硬件设备的驱动程序服务的。
usbstor.inf文件是由许多节(Section)组成,节名用方括号扩起来,如version节,Manufacturer节,和Strings节等等。而每个节又由一系列的条目组成,每个条目都是由一个键(Key)与一个值(Value)组成,都是“Key=Value”这样的形式,在这些节中定义的项目可以完成硬件的自动检测和软件(包括驱动程序)的安装。.INF文件中分号后面的字符串是注释。在一个.INF文件中,所有跟随在分号(;)后的文字都会被视为注释。注释并不一定要在新行开始,可以在一行文字后面加入注释。
2.2.3 修改USB存储设备驱动程序文件usbstor.inf
在Windows XP的usbstor.inf文件中:QV2KUX节中“StartType=3”;Common节中“StartType=3”我们称之为USB存储设备初始状态值,或USB存储设备驱动文件默认状态值,此时,USB存储设备处于可用状态。将文件“usbstor.inf”复制一个副本命名为“EnableUsbstor.inf”,作为以后恢复文件之用。此时,从未插过USB接口的存储设备插入USB接口时,USB设备驱动程序usbstor.inf将自动检查和安装USB设备驱动程序,同时将Start键值改为3,USB存储设备可用。
在Windows XP环境下可使用文本编辑器将usbstor.inf文件中的两处StartType键值进行修改:即QV2KUX 节中“StartType=4”;Common节中“Start-Type=4”称为USB存储设备禁用状态值,此时,USB存储设备处于禁用状态。将文件另存为“DisableUsbstor.inf”。
此时,从未插过USB接口的存储设备插入USB接口时,USB设备驱动程序usbstor.inf将能够自动检查但不能自动安装USB设备驱动程序,同时也不能将Start键值改为3,USB存储设备将不可用。
我们把计算机管理者或机房管理者给定义为administrator角色,他负责管理所有计算机,有权设定计算机的使用权限,包括USB存储设备的禁用和启用设定,Administrator可以使用两个用例即Disable USB Storage Device用例和Enable USB Storage Device用例,Disable USB Storage Device用例完成禁用USB存储设备的功能,Enable USB Storage Device用例完成启用USB存储设备的功能。禁用与启用USB存储设备用例图如Figure 2所示。
Figure 2 Disable and Enable USB storage devices use casediagram
USB存储设备的禁用和启用设定是用两个程序来完成的,他们分别用于禁用和启用USB设备,程序的工作原理是修改注册表中的键值和修改USB设备驱动程序usbstor.inf中的键值。DisableUSB.c程序完成Disable USB Storage Device功能,Enable-USB.c完成 Enable USB Storage Device功能,DisableUSB.c和 EnableUSB.c程序在 Turbo C Version2.0开发环境下编译通过后,可以生成Disable-USB.exe和EnableUSB.exe可执行文件以备运行。
本文使用C语言设计的程序,在Windows XP中,将 DisableUSB.exe 、EnableUSB.exe、DisableUsbstor.inf、EnableUsbstor.inf四个文件放在同一个文件夹里。当需要禁用USB存储设备时,运行Disable-USB.exe文件,回答预先设定的密码如“cuc”即可;当需要启用USB存储设备时,运行EnableUSB.exe文件,回答预先设定的密码如“cuc”即可。本文禁用USB存储设备的思路简单,以纯软件手段的实现方法也存在其不可避免的弊端,即高手可以以纯软件手段解锁USB设备,所以本文只是提供一个实现禁用USB设备的基本思路,而其实际应用中的安全性还有待研究和讨论
[1]陆原,魏杰,孟玮.Windows XP环境下USB设备驱动程序的开发[J].国外电子元器件,2007,(7):28.
[2]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2008.
[3]袁涛,孙蕾蕾.统一建模语言 UML[M].北京:清华大学出版社,2009.
A Research&Implementation of Disabling the USB Storage Equipment in Windows System
SHI Xi-fu1,YANG Jun-sheng2,SHI Zeng-tian3
(1,2.Computer and Network Center,Communication University of China,Beijing 100024,China 3.International College ,Beijing University of Posts and Telecommunications,Beijing 102209,China)
This paper provides a software solution of disabling USB storage equipment such as flash disk or portable hard drive while other USB equipment could work as normal under the Windows XP operating system.The program is implemented in C language.
windows XP operating system;disable USB storage equipment;software solution;Computer room;Management
TP311.1
A
1673-4793(2012)02-0060-05
2012-3-22
石喜富(1962-),男(汉族),北京市人,中国传媒大学高级工程师.E-mail:ston@cuc.edu.cn
(责任编辑
:王 谦)