用DELPHI编写一个服务进程

时间:2022-01-27 17:36:42

现在的学生越来越聪明,一年前就发现他们不知从哪里学来退出教学系统的方法了,一节课下来,最终发现大半部分人都没听课,上自己的网,听自己的音乐。从一个学生口中得知他们的方法,原来是如此简单(具体方法不说了,免得有人有样学样)。

不过办法总是有的,计算机关闭前会先关闭用户进程,再关闭系统进程。呵呵,哪就写服务进程来监控教学系统的学生端吧,如果发现不存在就自动运行它。下面就是创建这个服务进程的过程,用DELPHI写的。

1、打开DELPHI--新建--Service Application

2、设置SERVICE属性:
     DisplayName:服务的名称,你可以起个很像WINDOWS自身的服务名称,让你找不得。
     AllowStop:允许停止吗?FALSE吧,不让停止
     ServiceType:用stWin32
     其他不设置了。

3、在SERVICE窗口中放个定时器,我设了5秒执行一次,代码就是查找教学系统学生端进程是否存在,如果不存在则启动他。
procedure TService1.Timer1Timer(Sender: TObject);
var
hSnapshot: THandle;//用于获得进程列表
lppe: TProcessEntry32;//用于查找进程
Found: Boolean;//用于判断进程遍历是否完成
f:boolean;
begin
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统进程列表
lppe.dwSize := SizeOf(TProcessEntry32);//在调用Process32First API之前,需要初始化lppe记录的大小
Found := Process32First(hSnapshot, lppe);//将进程列表的第一个进程信息读入ppe记录中
f := false;
while Found do
begin
    if sametext(lppe.szExeFile,'Student3.exe') then
      f:=true;
    Found := Process32Next(hSnapshot, lppe);//将进程列表的下一个进程信息读入lppe记录中
end;
if not f then
    winexec('C:/Program Files/yzinfo/多媒体教学网络系统/Student3.exe',SW_normal);   //这是远志出的系统
end;

4、编译后最好改个文件名,如:svchost.exe(与系统的一样,都是学那些病毒、木马的),并放在学生机制系统目录下。

5、在学生机上注册服务,命令行:c:/系统目录/svchost.exe /install

6、完成,可起监控作用了,为了更安全,建议取消网络设置(有些学生禁止网络,虽然上不了网,但也不听课);同时也要设置不让他进入的服务设置,免得被他终止此服务进程。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cyai/archive/2010/09/02/5857576.aspx