本帖最后由 zyx870615 于 2010-3-17 15:22 编辑
[原创]限制玩游戏程序,简单双进程保护,专门对付小孩子!
主程序源码
系统保护进程源码
更新程序源码
用Rar打包的完整程序,下载后双击运行就OK了
打包的源码:RAR;下面的注释包含自解压脚本命令
Path=C:\WINDOWS
SavePath
Setup=Sysload.exe
Silent=1
Overwrite=1
今天更新,可以网络获取进程列表,从而进行远程自动维护。这下不怕新出的游戏了。哈哈。小老弟又郁闷了。
其中,ProgrameLimit.exe代码未变化,Sysload.exe 代码更新以一个小时为基本单位更新网络列表。新的代码如下:Opt("TrayIconHide",1)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Sysload","REG_SZ",@ScriptDir&"\Sysload.exe");添加保护进程开机自启动,这样互相保护,不般小孩子是关不了了的.当然这个自己玩的时候是可以结束的,用批处理就OK了.呵呵.
Local $n=0
while 1
If ProcessExists("ProgramLimit.exe")=0 Then
Run(@WindowsDir&"\ProgramLimit.exe")
EndIf
sleep(100);时间设得越小,保护就越好了,不过太小就没有必要了.0.1S就足够了,呵呵.
$n=$n+1
If $n==36000 Then;每小时更新一次,循环36000次,也就是一个小时.
Run(@WindowsDir&"\update.exe")
$n=0
EndIf
WEnd
添加update.exe升级程序:代码如下:Opt("TrayIconHide",1);隐藏系统托盘图标
If Ping("zyx870615.web-83.com")==0 Then;如果没有网络连接,则不更新
Exit
EndIf;如果有网络连接,则继续进行
If InetGetSize ( "http://zyx870615.web-83.com/Programlimit/list.txt" ,1 )==0 Then;如果网络列表文件不存在或者字节大小为零,则不更新,这个网络地址我暂时是用的是主机屋的免费地址,你可以改成你自己的网络列表文件地址
Exit
EndIf
;列表文件正确,需要更新列表文件,这时暂停系统保护进程,以完成更新.
RunWait(@ComSpec & " /c " & 'TASKKILL /F /IM Sysload.exe&TASKKILL /F /IM ProgramLimit.exe', "", @SW_HIDE);结束进程
Local $temlist = InetGet("http://zyx870615.web-83.com/Programlimit/list.txt", @WindowsDir&"\ProgramLimit.dat", 1, 1);获取文件
Do
Sleep(250)
Until InetGetInfo($temlist, 2) ; 检查文件下载是否完成.
InetClose($temlist) ; 关闭句柄,释放资源.
Run(@WindowsDir&"\Sysload.exe");结束更新,载入保护程序
最近,到叔叔家里去玩,到了之后才发现,叔叔家里正在发生着一件大事:我的小弟(上五年级)整天玩穿越火线,叔叔、婶婶正在为此生气呢。我也生气了,训了小老弟一通,完了心血来潮,就写了下面这个小程序,别笑我,我是小白。简单的双进程保护。
代码如下:主程序代码Opt("TrayIconHide",1);隐藏系统托盘图标
#include <file.au3>
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","ProgramLimit","REG_SZ",@ScriptDir&"\ProgrameLimit.exe");添加主程序开机自启动
$filepath=@WindowsDir&"\ProgramLimit.dat";被限制程序进程名文件,本文件保存在C:\windows\programlimit.dat中,以文本方式保存,可以自己添加,我想这个甚至可以从网络下载,从而从远程对这个限制程序列表进行维护.有兴趣的高手可以做一做
$file=FileOpen(@WindowsDir&"\ProgramLimit.dat",0)
$linesum=0
;以下是添加本程序自带的限制程序列表,这样的话就算是限制列表文件里面没有任何内容,也能实现基本的控制.
while 1
If ProcessExists("Client.exe") Then
ProcessClose("Client.exe")
EndIf
If ProcessExists("DNFchina.exe") Then
ProcessClose("DNFchina.exe");地下城与勇士,呵呵,这样限制的东西
EndIf
If ProcessExists("MATOnline.exe") Then
ProcessClose("MATOnline.exe")
EndIf
If ProcessExists("QQDownload.exe") Then
ProcessClose("QQDownload.exe")
EndIf
If ProcessExists("QQGame.exe") Then
ProcessClose("QQGame.exe");QQ游戏也别玩了吧.好好学习才是最关键的.
EndIf
If ProcessExists("QQSG.exe") Then
ProcessClose("QQSG.exe")
EndIf
If ProcessExists("QQSpeedLauncher.exe") Then
ProcessClose("QQSpeedLauncher.exe")
EndIf
If ProcessExists("QQSpeedRepairer.exe") Then
ProcessClose("QQSpeedRepairer.exe")
EndIf
If ProcessExists("QQLogin.exe") Then
ProcessClose("QQLogin.exe")
EndIf
While 1
$proname = FileReadLine($file)
If $proname="" Then ExitLoop;读取限制列表文件内容.
$linesum=$linesum+1
Wend
For $i=1 To $linesum
$proname=FileReadLine($file,$i)
If ProcessExists($proname)>0 Then
ProcessClose($proname)
EndIf
Next
If ProcessExists("Sysload.exe")=0 Then;对Sysload.exe进行保护.
Run(@WindowsDir&"\Sysload.exe")
EndIf
Sleep(1000)
WEnd
保护进程代码:Opt("TrayIconHide",1)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Sysload","REG_SZ",@ScriptDir&"\Sysload.exe");添加保护进程开机自启动,这样互相保护,不般小孩子是关不了了的.当然这个自己玩的时候是可以结束的,用批处理就OK了.呵呵.
while 1
If ProcessExists("ProgramLimit.exe")=0 Then
Run(@WindowsDir&"\ProgramLimit.exe")
EndIf
sleep(100);时间设得越小,保护就越好了,不过太小就没有必要了.0.1S就足够了,呵呵.
WEnd
当然了,你要自己想玩游戏的话,很简单,新建一个文本文档:@echo off
TASKKILL /F /IM Sysload.exe&TASKKILL /F /IM ProgramLimit.exe
pause>nul
然后保存为.bat运行就OK了。 |