摘要:該文主要介紹如何用VB實現U盤實時監控系統,并給出了實現的關鍵代碼。
關鍵詞:VB;U盤;實時監控
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)11-2782-01
Design and Application of Realization of USB Disk Real-time Monitoring
BAI Xue1, ZHAO Lei2
(1. Department of Computer Aviation University of Air Force, Changchun 130022, China; 2. Basic Training Base, Aviation University of Air Force, Changchun 130022, China)
Abstract: This paper presents how to realize USB disk real-time monitoring by use of VB language. The realization key codes are also given.
Key words: VB;USB Disk;Real-time Monitoring
信息安全的問題是現代信息社會中一個非常重要的問題,為了防止失泄密問題的發生,禁止使用U盤是其中一種行之有效的做法。但有時為了工作的需要,難免要使用U盤,雖然有不少方法可以通過相應的設置禁止USB口的使用,但有時又需要重新開放USB口的使用。如果通過程序對USB口進行實時監控,只要有人在USB口插入U盤后就馬上報警,同樣能夠達到一定的保護作用。本文主要介紹了在VB中使用SysInfo控件對U盤進行實時監控,最后給出了實現的關鍵代碼。
1 基本原理
SysInfo控件可以檢測操作系統提供的信息,同時對操作系統產生的事件作出反應。使用SysInfo 控件的DeviceArrival和DeviceRemove Complete事件可以對加載驅動器、卸載驅動器的事件作出響應,通過該控件的這兩個事件可以判斷是否有存儲器插拔。在本例中,使用了SysInfo控件的DeviceArrival事件,該事件當系統中添加新設備時產生。事件有四個參數,其中DeviceType指示已添加設備的類型,等于2表示添加了新的磁盤;deviceID參數識別設備的值,通過它可以轉換得到新磁盤的盤符,其值等于2的n次方,n即為盤符(對應字母順序A盤為0、B盤為1…)。得到新磁盤的盤符后還要判斷其是否為U盤,這需要使用API函數GetDriveType。該函數的功能是判斷一個磁盤驅動器的類型,其返回值2表示可移動磁盤。一旦發現新添加的是U盤,利用API函數NetMessageBufferSend給局域內指定為監控服務器的接收端計算機發送報警信息。使用這一函數的時候需要知道本機的計算機名,這通過調用API函數GetComputerName來實現[1]。
2 具體實現
啟動VB新建一個窗體,在該窗體上添加一個SysInfo控件,并將其命名為SysInfo1。在窗體中主要代碼如下:
Dim ToName() As Byte'信息接收端計算機
Dim FromName() As Byte'信息發送端計算機
Dim Msg() As Byte'發送的信息
cmprName = String(255, 0)
GetComputerName cmprName, 256'獲取本機的計算機名
ToName = \"172.16.100.200\" vbNullChar '設定信息接收端計算機地址
FromName = cmprName
If DeviceType = 2 Then'2 表示添加新設備是磁盤驅動器
If GetDriveType(GetDriveLetter(deviceID) \":\") = 2 Then'2 表示可移動磁盤
Msg = cmprName vbNullChar \" 有可移動磁盤插入\" vbNullChar
End If
ret = NetMessageBufferSend(ByVal 0, ToName(0),ByVal 0, Msg(0), UBound(Msg))'向接收端計算機發送信息
If ret <> False Then End'信息發送失敗則結束本程序
End If
End Sub
Private Function GetDriveLetter (deviceID As Long) As String
Dim i As Integer
For i = 0 To 25
If deviceID = 2 ^ i Then
GetDriveLetter = Chr (Asc (\"A\") + i)'返回盤符
Exit Function
End If
Next
End Function
3 結束語
以上程序在Windows XP+Visual Basic6.0下調試通過,執行后其主窗體自動隱藏,而且也不會在任務管理器中顯示。實踐證明,該文所介紹的方法簡單有效、實用可行。
參考文獻:
[1]明日科技.Visual Basic 開發經驗技巧寶典[M].北京:人民郵電出版社,2007.