趙 睿
(常德技師學院 湖南 常德 415000)
學校新建了兩個機房,由于使用了64位的win7系統,在多媒體教學軟件的選用中,只有紅蜘蛛教學軟件能滿足要求,所以機房中安裝了紅蜘蛛系統來進行教學演示。
最近上課,發現許多調皮的學生都悄悄把紅蜘蛛客戶端退出了,他們是怎么做到的呢?經過觀察,我發現學生們采取結束紅蜘蛛進程,并對程序進行刪除或改名,也就是說,安裝文件夾下沒有了紅蜘蛛程序,這樣,學生就成功的脫離了教師機的控制。
怎么辦呢?問題原因是安裝文件夾下的紅蜘蛛文件不存在了,由此我想,如果我來編寫一個程序,用來檢測該文件是否存在,如果不存在了,自動將備份的紅蜘蛛程序復制過去,這樣不就可以起到避免教學軟件的退出了么?
說做就做,我啟動VB,新建一個標準exe文件,并將form控件的visible屬性設置為disable,因為我不希望這個程序運行后被學生發現,該屬性設置后窗體不會被顯示出來。然后我又在窗體上建立了一個timer控件,將interval屬性設置為5000,意思為過5秒檢測一次。雙擊timer控件,輸入如下代碼:
On Error Resume Next
If Dir("c:3000softRed spiderRedagent.exe") ="" Then
FileCopy "c:windowsak.dat", "c:3000softRed spiderRedagent.exe"
End If
以上代碼的意思是檢測"c:3000softRed spiderRedagent.exe"文件是否存在,如果不存在了,則復制"c:windowsak.dat"文件過去(該文件是我做的Redagent的備份文件),并改名為Redagent.exe。這段代碼每隔5秒鐘執行一次,確保紅蜘蛛教學軟件的安全。
簡單的代碼寫好后,我生成exe文件,然后復制到機房的每臺電腦上,并通過修改注冊表,將其設置為自啟動文件,果然,在后面的教學中,起到了立竿見影的效果,許多學生發現無法刪除掉紅蜘蛛了。
可是,好景不長,過了幾個星期,機房又出現了紅蜘蛛被退出的現象,經過調查,發現學生已經找到了我做的程序,然后——也把它結束進程刪掉了!怎么辦?我想到了Windows的服務系統。
大家都知道,Windows有許多許多的服務,服務其實就是一個程序,服務也能隨著計算機的啟動而執行,而且在執行后并不能在進程中發現。我如果把自己的這個程序做成一個服務,那豈不是就能避免被學生發現了?于是,我開始對我的源程序進行改造。
Vb下做服務比較麻煩,需要一個控件——ntsvc.ocx,我首先下載這個控件,把它復制到c:windows下,并通過regsvr32 ntsvc.ocx進行注冊,然后打開我的源程序,選擇“工程”——“部件”,引用這個控件,引用成功后,在工具箱中出現了一個Ntservice的控件按鈕。
我把這個控件添加到form1中,然后在右側的屬性欄中設置如下參數:
Displayname:sys service (顯示名,我起名的原則是不易被發現,其實用任意的名字都可以的)
Servicename:service(服務名:起名的理由同上)Startmode:2(啟動模式:自動啟動)
其余的參數基本可以不變,然后我再在程序的Form_load事件中添加如下代碼:
On Error GoTo Err_Load
Dim strDisplayName As String
strDisplayName = NTService1.DisplayName
If Command = "-install" Then
NTService1.Interactive = True
If NTService1.Install Then
Call NTService1.SaveSetting("Parameters","TimerInterval", "1000")
MsgBox strDisplayName & "安裝成功 "
Else
MsgBox strDisplayName & " 安裝失敗"
End If
End
Else
If Command = "-uninstall" Then
If NTService1.Uninstall Then
MsgBox strDisplayName & "卸載成功"
Else
MsgBox strDisplayName & " 卸載失敗"
End If
End
Else
End If
End If
Timer1.Interval = CInt(NTService1.GetSetting("Parameters", "TimerInterval","2000"))
N T S e r v i c e1.C o n t r o l s A c c e p t e d=svcCtrlPauseContinue
NTService1.StartService
首先,生成一個可執行程序,我將其起名為system.exe,然后復制到學生電腦的c:windowssystem32下面。然后進入CMD,輸入如下命令:system–install然后回車,出現安裝成功的對話框提示。這個時候,打開控制面板的服務,發現我的這個服務已經被加入進去,而且是設置為自啟動的。
那么,究竟可以了沒有呢?我重啟學生電腦,啟動完畢后,再次打開服務,發現這個服務已經啟動了,我嘗試著刪除了紅蜘蛛軟件,果然,不到5秒鐘,紅蜘蛛就被復制過來了,終于成功了!
新做的程序已經在機房試用了一段時間了,最近均沒有發現紅蜘蛛被退出的事情了,此番和學生斗智斗勇的過程讓我也學到了不少知識,不過,除了在技術上約束學生以外,我們教師更多的還是要在教學上下功夫,以提高學生的學習積極性。
[1]羅朝盛.《Visual Basic 程序設計教程》人民郵電出版社,2005.
[2]管麗娜,白海波.《實用Visual Basic6 教程》[M].北京:清華大學出版社,2001.
[3]段興主編.《visual Basic數據庫實用程序設計100例》人民郵電出版社.