石喜富,楊俊生,石增天
(1,2.中國傳媒大學計算機與網絡中心,北京 100024;3.北京郵電大學國際學院,北京 102209)
Windows環(huán)境下禁用USB存儲設備程序設計與實現(xiàn)
石喜富1,楊俊生2,石增天3
(1,2.中國傳媒大學計算機與網絡中心,北京 100024;3.北京郵電大學國際學院,北京 102209)
提供了USB存儲設備驅動的工作原理,并用C語言在Windows XP操作系統(tǒng)中實現(xiàn)了禁用和啟用USB存儲設備的同時并不影響其他USB設備的使用。
Windows XP操作系統(tǒng);禁用USB存儲設備;軟件實現(xiàn);計算機房;管理
Microsoft win2k,winxp,win7 等操作系統(tǒng)由于其運行穩(wěn)定、可靠、速度快并且具有良好的用戶體驗,因此應用比較廣泛。在Windows XP運行平臺支持下,USB(UniversalSerial Bus,通用串行總線)具有連接單一化、即插即用、支持熱插拔等特點,簡化了PC和外圍設備的連接過程,所以,USB接口存儲器的使用也很普及。在某些環(huán)境下需要禁用USB存儲設備,例如:使用計算機進行的各種無紙化考試,為了防止考題泄露、考生作弊和計算機病毒侵入考試系統(tǒng)就需要禁用USB存儲設備的同時讓鼠標等其它USB接口設備工作正常。
本文使用C語言設計了應用程序,通過修改USB設備驅動程序和Windows注冊表的方法,用軟件手段實現(xiàn)了禁用USB存儲設備的同時讓其它USB接口設備工作正常的目標;在需要USB存儲設備時又可以方便恢復使用。實現(xiàn)了在Windows環(huán)境下,設備管理者根據(jù)需要,方便的禁用和啟用USB存儲設備的目的。
在Windows操作系統(tǒng)下,計算機的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操作系統(tǒng)USB設備驅動程序usbstor.inf將自動檢查和安裝USB設備驅動程序,同時會自動將Start鍵值改回3,此時所有USB存儲設備均可用。因此要完全禁用USB存儲設備,還需要手動修改USB設備驅動程序usbstor.inf中的鍵值。
為了解釋修改USB設備驅動程序usbstor.inf中的鍵值的原因,首先需要了解Windows XP系統(tǒng)及其WDM驅動程序。
2.2.1 Windows XP系統(tǒng)及其WDM驅動程序簡單介紹
Windows XP運行平臺支持兩種模式:用戶模式和內核模式。用戶模式下,應用程序接口調用函數(shù)在一些例程的幫助下可完成向設備讀寫數(shù)據(jù)功能。操作系統(tǒng)創(chuàng)建一個稱為I/O請求包(IRP)的數(shù)據(jù)結構,并將IRP送入設備驅動的一個入口點。而在內核模式下,設備驅動執(zhí)行IRP并最終完成與硬件的數(shù)據(jù)訪問。驅動程序工作于內核模式,既可以直接訪問硬件,也可以通過硬件抽象層提供的一些功能實現(xiàn)對硬件的訪問。
WDM(Windows Driver Mode,Windows驅動程序模型)是Microsoft推出的一種驅動程序模型,由運行于內核模式的系統(tǒng)級代碼組成,在應用程序和設備之間采用分層驅動的方法,其中包含三種類型的驅動程序,其可能的一種結構如圖1所示。
圖1WDM驅動程序結構
過濾驅動程序用于過濾向設備、設備類或總線I/O發(fā)送請求,可服務于多個設備,還可進一步劃分,這部分是可選的??偩€驅動程序負責驅動I/O總線,處理總線上的全部事務,控制對其總線所有設備的訪問。功能驅動程序用于驅動一個單獨的設備,控制并實現(xiàn)該設備的主要功能。
2.2.2 USB存儲設備驅動文件usbstor.inf簡單介紹
USB設備所采用的驅動程序是一種典型的WDM驅動程序。在WDM驅動程序中,即插即用管理器(PnP)負責通知操作系統(tǒng)何時添加(或刪除)設備,并使用INF(Device Information File,設備信息文件)文件來查找新設備的驅動程序。
INF是 Information File的縮寫,是微軟公司為硬件設備制造商發(fā)布其設備驅動程序而開發(fā)的,許多硬件設備的驅動程序都是使用.INF文件來安裝的。.INF文件從Windows3.X時代就開始大量被使用了。.INF文件是一種具有特定格式的純文本文件,我們可說它是一種安裝腳本(SetupScript)。雖然.INF只是純文本文件,但是當我們在Windows操作系統(tǒng)運行環(huán)境下對.INF文件按鼠標右鍵后,在右鍵菜單上就會出現(xiàn)“安裝I”命令,這是因為微軟公司已在其操作系統(tǒng) Windows中內置提供了 Setup API解析INF腳本文件,我們只需用文本編輯軟件編寫.INF文件,便可完成大部份的安裝工作,所以尤其是在軟體的大小并不是很大的情況下,安裝工作不是很復雜的時候,使用.INF文件來進行安裝工作將會是一個較好選擇。而且如果要安裝設備驅動程序,.INF文件是目前唯一的選擇。.INF文件可以提供有限的平臺獨立性,并指定有限的軟件依賴性。目前.INF文件最普遍的應用是為安裝硬件設備的驅動程序服務的。
usbstor.inf文件是由許多節(jié)(Section)組成,節(jié)名用方括號擴起來,如version節(jié),Manufacturer節(jié),和Strings節(jié)等等。而每個節(jié)又由一系列的條目組成,每個條目都是由一個鍵(Key)與一個值(Value)組成,都是“Key=Value”這樣的形式,在這些節(jié)中定義的項目可以完成硬件的自動檢測和軟件(包括驅動程序)的安裝。.INF文件中分號后面的字符串是注釋。在一個.INF文件中,所有跟隨在分號(;)后的文字都會被視為注釋。注釋并不一定要在新行開始,可以在一行文字后面加入注釋。
2.2.3 修改USB存儲設備驅動程序文件usbstor.inf
在Windows XP的usbstor.inf文件中:QV2KUX節(jié)中“StartType=3”;Common節(jié)中“StartType=3”我們稱之為USB存儲設備初始狀態(tài)值,或USB存儲設備驅動文件默認狀態(tài)值,此時,USB存儲設備處于可用狀態(tài)。將文件“usbstor.inf”復制一個副本命名為“EnableUsbstor.inf”,作為以后恢復文件之用。此時,從未插過USB接口的存儲設備插入USB接口時,USB設備驅動程序usbstor.inf將自動檢查和安裝USB設備驅動程序,同時將Start鍵值改為3,USB存儲設備可用。
在Windows XP環(huán)境下可使用文本編輯器將usbstor.inf文件中的兩處StartType鍵值進行修改:即QV2KUX 節(jié)中“StartType=4”;Common節(jié)中“Start-Type=4”稱為USB存儲設備禁用狀態(tài)值,此時,USB存儲設備處于禁用狀態(tài)。將文件另存為“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開發(fā)環(huán)境下編譯通過后,可以生成Disable-USB.exe和EnableUSB.exe可執(zhí)行文件以備運行。
本文使用C語言設計的程序,在Windows XP中,將 DisableUSB.exe 、EnableUSB.exe、DisableUsbstor.inf、EnableUsbstor.inf四個文件放在同一個文件夾里。當需要禁用USB存儲設備時,運行Disable-USB.exe文件,回答預先設定的密碼如“cuc”即可;當需要啟用USB存儲設備時,運行EnableUSB.exe文件,回答預先設定的密碼如“cuc”即可。本文禁用USB存儲設備的思路簡單,以純軟件手段的實現(xiàn)方法也存在其不可避免的弊端,即高手可以以純軟件手段解鎖USB設備,所以本文只是提供一個實現(xiàn)禁用USB設備的基本思路,而其實際應用中的安全性還有待研究和討論
[1]陸原,魏杰,孟瑋.Windows XP環(huán)境下USB設備驅動程序的開發(fā)[J].國外電子元器件,2007,(7):28.
[2]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2008.
[3]袁濤,孫蕾蕾.統(tǒng)一建模語言 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
(責任編輯
:王 謙)