利用VB制作系统服务来维护教学软件的运行
2018-02-16赵睿
赵 睿
(常德技师学院 湖南 常德 415000)
1 问题起因
学校新建了两个机房,由于使用了64位的win7系统,在多媒体教学软件的选用中,只有红蜘蛛教学软件能满足要求,所以机房中安装了红蜘蛛系统来进行教学演示。
最近上课,发现许多调皮的学生都悄悄把红蜘蛛客户端退出了,他们是怎么做到的呢?经过观察,我发现学生们采取结束红蜘蛛进程,并对程序进行删除或改名,也就是说,安装文件夹下没有了红蜘蛛程序,这样,学生就成功的脱离了教师机的控制。
2 解决思路
怎么办呢?问题原因是安装文件夹下的红蜘蛛文件不存在了,由此我想,如果我来编写一个程序,用来检测该文件是否存在,如果不存在了,自动将备份的红蜘蛛程序复制过去,这样不就可以起到避免教学软件的退出了么?
3 程序设计
说做就做,我启动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文件,然后复制到机房的每台电脑上,并通过修改注册表,将其设置为自启动文件,果然,在后面的教学中,起到了立竿见影的效果,许多学生发现无法删除掉红蜘蛛了。
4 再起波澜
可是,好景不长,过了几个星期,机房又出现了红蜘蛛被退出的现象,经过调查,发现学生已经找到了我做的程序,然后——也把它结束进程删掉了!怎么办?我想到了Windows的服务系统。
大家都知道,Windows有许多许多的服务,服务其实就是一个程序,服务也能随着计算机的启动而执行,而且在执行后并不能在进程中发现。我如果把自己的这个程序做成一个服务,那岂不是就能避免被学生发现了?于是,我开始对我的源程序进行改造。
5 程序改编
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
6 生成服务
首先,生成一个可执行程序,我将其起名为system.exe,然后复制到学生电脑的c:windowssystem32下面。然后进入CMD,输入如下命令:system–install然后回车,出现安装成功的对话框提示。这个时候,打开控制面板的服务,发现我的这个服务已经被加入进去,而且是设置为自启动的。
那么,究竟可以了没有呢?我重启学生电脑,启动完毕后,再次打开服务,发现这个服务已经启动了,我尝试着删除了红蜘蛛软件,果然,不到5秒钟,红蜘蛛就被复制过来了,终于成功了!
7 结语
新做的程序已经在机房试用了一段时间了,最近均没有发现红蜘蛛被退出的事情了,此番和学生斗智斗勇的过程让我也学到了不少知识,不过,除了在技术上约束学生以外,我们教师更多的还是要在教学上下功夫,以提高学生的学习积极性。
[1]罗朝盛.《Visual Basic 程序设计教程》人民邮电出版社,2005.
[2]管丽娜,白海波.《实用Visual Basic6 教程》[M].北京:清华大学出版社,2001.
[3]段兴主编.《visual Basic数据库实用程序设计100例》人民邮电出版社.