开篇:润墨网以专业的文秘视角,为您筛选了一篇U盘实时监控系统的研究与开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:该文主要介绍如何用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.