Board logo

标题: [求助] CMD环境纯批处理防沉迷系统 [打印本页]

作者: chishingchan     时间: 2008-4-7 11:27    标题: [求助] CMD环境纯批处理防沉迷系统

说明:
现在玩游戏都是在XP环境下,所以说是CMD环境;
纯批处理就是尽量不需要第三方软件支持,但如果真的没办法,那只好也要用了;
防沉迷系统就是多时段控制电脑的使用,不管是程序、游戏、网址等等控制。

起因:
现在电脑很普及,很多青少年(还在校读书的那种)总是玩游戏不分昼夜的影响学习,不但影响学习,还会影响身体。我自己不是编程的料,所以。。。

参考:电脑报2006合订本242页:计算机防沉迷绝招-巧用“计划任务”管理开机时间觉得还不太理想:1、批处理数量多;2、计划任务容易被发现;3、还有些功能不足。

求助要求:
1、生成单一批处理文件(可以多参数形式运行),使其隐藏运行或以服务方式运行。
2、监视系统时间被恶意更改(可能要使用记录文件进行时间对比)
3、当没有连接网络时,按照系统时间处理,当连接网络时支持同步网络某服务器时间:
    系统要有Windows Time(W32Time)服务,设为自动
    net time /setsntp:time.jmu.edu.cn          ;设置时间服务器地址
    net stop w32time          ;停止时间服务
    net start w32time          ;开始时间服务
    w32tm -s          ;立即同步时间
4、支持多时段设置,例如:允许9:30-11:30、15:00-17:00、19:00-21:00使用电脑,其余时间一律自动关机;
5、支持设置禁止运行某些程序(包括游戏)、网址等等

因功能太多,个人可能认为不能全部胜任的,可以单一功能回贴,非常感谢!
作者: knightak     时间: 2008-4-7 15:32
纯命令行批处理应该是无法实现你说的全部功能的,除非介入外界工具
这么多要求你还是找软件公司给你做吧,论坛是答疑解惑的,不是帮人做项目的。
....................BTW:万一人家的东西被你拿去卖就有的看了。
作者: knightak     时间: 2008-4-7 15:34
想办法从教育上着手,对孩子是最好的。
你这种应该是暴力干涉。
教育还是教育呵呵。
作者: zh159     时间: 2008-4-7 16:15
真的,LZ,我真的很想拿支手枪把美国那几艘航母干掉。
作者: voiL     时间: 2008-4-7 19:11
这个我以前就写过.不过因为硬盘坏了所以也就费掉了.现在我没时间也没那份精力去写了,希望坛子里的兄弟来完善完善吧.

楼主所说的大部分功能我都有写的,可以搜索一下我以前发过的帖子,合起来应该就差不多了.

至于密码方面,可以用MD5.exe加密,再用est大哥所发的那个vbs写的setx.vbs来写到系统或用户变量里.也可用系统时间来生成密码来产生一个根据时间变化而变化的密码.

至于时间方面(CMD对8,9类数字无效),可以参考jastyg兄所发的计划任务小程序
http://www.cn-dos.net/forum/viewthread.php?tid=21110

时间校对方面可参考这里
http://www.cn-dos.net/forum/viewthread.php?tid=17659

setx.vbs
http://www.cn-dos.net/forum/viewthread.php?tid=27952
作者: chishingchan     时间: 2008-4-7 21:50
5楼的回复才像些样子,参考一下,想来是没有帮的了,唯有自己试试做!
作者: lotus516     时间: 2008-4-8 00:46
LZ的要求很容易实现!
1、用VBS即可以隐藏了
2、使用组策略,禁止更改时间
3、有了2,就不用上网对是时间了
4、shutdown -f -s -t 0这句就可以关机了,这句给个参考:
if "%a%%b%" gtr "930" if "%a%%b%" lss "1000" (
for /f "delims=" %%i in ('"cscript //nologo E:\自编程序区\共用2.vbs 现在属于关机时间,请在两分钟之内作出是否关机的决定,否则将于两分钟后自动关机"') do if /i %%i==no (echo.>no.bat) else shutdown -f -s -t 0)
930,1000是指9:30--10:00,句中的VBS在本坛坛上搜索,名字不叫共用2就是,当然这个是选择的,你可以改为强制的,不能选的,到时间必须关机!
5、程序可以禁止使用,但某个网址就不好办了!!
作者: slore     时间: 2008-4-8 03:01
都比较好实现,感觉体力活,放弃~

给你思路:
5.禁止程序用镜像劫持
  禁止网址用HOSTS
作者: chishingchan     时间: 2008-4-8 11:15
谢谢7楼,本人对VBS不熟悉,还是自己学编批处理,不懂再问。以前编了个更改系统文件转移程序也是这样得来的。
因记性不太好,虽知道很多命令的用途,但应用时还要查一下帮助或参考别人的例子。
作者: lotus516     时间: 2008-4-8 13:24
不是叫你用VBS编程,只是让你用VBS起动批处理,就可以隐藏了!!
CreateObject("WScript.Shell").Run "cmd /c E:\自编程序区\Q宠.bat",0
其实你的要求,1、4我都有,只不过想你自己写,对你自己也是好处,3你写出来了,我就不多说了,我也用不上这个!2其实除了在组策略中好弄外,其余都不怎么好,因为只要使用者知道你有这么个程序,可以在BIOS中改时间!!

[ Last edited by lotus516 on 2008-4-8 at 01:34 PM ]
作者: lotus516     时间: 2008-4-8 13:29
VBS见这篇http://www.cn-dos.net/forum/view ... =%E8%BF%94%E5%9B%9E
强制选择把这句的NO去掉!
intAnswer = MsgBox("没本设置只能在安全模式下进行,要继续吗? ", vbExclamation + vbYesNo, "小不点提示!")
作者: chishingchan     时间: 2008-4-8 22:35
没办法,只有一步一步来,先来处理时间登记及时间加密:
以下批处理生成一个 datetime.log 的文本文件(看引用部分),这一串字符串是这样排列的:
运行时间,随机密码,一段时间起,一段时间终,二段时间起,二段时间终,三段时间起,三段时间终
上面各段时间,全部都加上随机密码后写入 datetime.log 文件的。
@echo off
set hour=%time:~0,2%
set minute=%time:~3,2%
set second=%time:~6,2%
set t6=%hour%%minute%%second%

set /a p5=%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%
set /a t6p5=%t6%+%p5%
>datetime.log set /p=%t6p5%<nul
>>datetime.log set /p=%p5%<nul

set _one=100000
set one_=113000
set _two=140000
set two_=170000
set _three=200000
set three_=220000

set /a p5_one=%_one%+%p5%
set /a p5one_=%one_%+%p5%
set /a p5_two=%_two%+%p5%
set /a p5two_=%two_%+%p5%
set /a p5_three=%_three%+%p5%
set /a p5three_=%three_%+%p5%
>>datetime.log set /p=%p5_one%<nul
>>datetime.log set /p=%p5one_%<nul
>>datetime.log set /p=%p5_two%<nul
>>datetime.log set /p=%p5two_%<nul
>>datetime.log set /p=%p5_three%<nul
>>datetime.log set /p=%p5three_%<nul

for /f %%a in (datetime.log) do set string=%%a
echo 加密文本:%string%
set /a password=%string:~6,5%
echo 密码文本:%password%
set /a runtime=%string:~0,6%-%string:~6,5%
echo 执行时间:%runtime:~0,2%:%runtime:~2,2%:%runtime:~4,2%
set /a one1=%string:~11,6%-%string:~6,5%
set /a one2=%string:~17,6%-%string:~6,5%
echo 第一阶段:%one1:~0,2%:%one1:~2,2%:%one1:~4,2%-%one2:~0,2%:%one2:~2,2%:%one2:~4,2%
set /a two1=%string:~23,6%-%string:~6,5%
set /a two2=%string:~29,6%-%string:~6,5%
echo 第二阶段:%two1:~0,2%:%two1:~2,2%:%two1:~4,2%-%two2:~0,2%:%two2:~2,2%:%two2:~4,2%
set /a three1=%string:~35,6%-%string:~6,5%
set /a three2=%string:~41,6%-%string:~6,5%
echo 第三阶段:%three1:~0,2%:%three1:~2,2%:%three1:~4,2%-%three2:~0,2%:%three2:~2,2%:%three2:~4,2%

:: ping -n 60 127.1>nul
pause
以下是批处理的执行结果,每机子的执行结果与下列数据是绝对不同的。

  Quote:
加密文本:22154011121111121124121151121181121211121231121
密码文本:11121
执行时间:21:04:19
第一阶段:10:00:00-11:30:00
第二阶段:14:00:00-17:00:00
第三阶段:20:00:00-22:00:00
请按任意键继续. . .

问题来了:
因为记录的时间段都是6位,如果是处理10点前的时间,原因是这个6位数前面是0的关系如何对加减运算处理好?况且这些时间还要以6位数的形式写入到 datetime.log 文件内的。

请教各位如何改进好呢?

[ Last edited by chishingchan on 2008-4-8 at 10:42 PM ]
作者: chishingchan     时间: 2008-4-8 22:48
这个问题我有想过用时间加一个1000000的数,哪管这个时间是00:00:00也好,但这个00:00:00就需要特别处理为=1000000,或者每个时间都再加上1秒,10时前的再加上1000000,处理时再减出1000000,不知这样好不好?
作者: chishingchan     时间: 2008-4-8 22:54    标题: 多谢 lotus516 的回复!

隐藏处理我是有方法的,如果用服务方式,本坛有,我没学习。但这个最后处理也不迟的。
核心的是要设定、检测、处理等等时间问题。
作者: chishingchan     时间: 2008-4-9 14:00
大家给点意见也好啊,帮助一下嘛!
作者: chishingchan     时间: 2008-4-10 00:28    标题: 学习了!

看了这贴: http://www.cn-dos.net/forum/view ... 8025&fpage=1###

应该有很大的帮助!
作者: lotus516     时间: 2008-4-10 12:44
觉得想得太复杂了,时间完全可以如下:
SET a=123456789012345678901234567890
set time=%a~1,2%:%a~11,2%
之类的嘛!
作者: 121872020     时间: 2008-5-17 18:02
ddddddddddddddd
作者: 121872020     时间: 2008-5-17 18:03
再顶~好啊~~
作者: everest79     时间: 2008-5-17 19:53
windows自身就有你要求的功能
时间定义于时间策略都是相当完善的,只不过在PC操作系统上这些都是默认关闭的
像本地策略中锁定时间校准所有者,锁定时间服务器,开机效对等,若是应用在集成环境中,还有更严密的时间限制策略及方法