标题: 大家帮忙写个监视收费软件进程的批处理 [打印本页]
作者: azheng2854 时间: 2008-9-29 07:34 标题: 大家帮忙写个监视收费软件进程的批处理
要求:1。后台执行,2。发现此进程结束后立即重起或关机。3。此批处理由服务器调用执行
麻烦各位了
补充一下:是没有发现此进程就关机,不是发现这个进程就关机,而且我需要能在批处理里设置这个进程的绝对路径(因为在进程中有两个这样的进程,我需要结束其中一个)
[ 本帖最后由 azheng2854 于 2008-10-2 14:46 编辑 ]
作者: pusofalse 时间: 2008-9-29 13:56
- @pv -r0 -d1000 进程>nul 2>nul&&shutdown -s -t 10
复制代码
借助第三方工具pv.exe,每1秒钟检测一次,检测到之后提示10秒后关机。
pv.exe:http://bbs.bathome.net/thread-1864-1-1.html
作者: lixiaodaoaaa 时间: 2008-9-29 15:03 标题: pusofalse的命令很不错
感谢一下pusofalse,确实很好学、很用心的帮大家
学习了pv.exe,大家一起学习下,向pusofalse学习下,很厉害的pav.exe进程管理工具
请下载pav.exe复制到system32下,地址在楼上已经写好了http://bbs.bathome.net/thread-1864-1-1.html
----------------------------------------------------------------------------------------------------------------------------
简单把pusofalse的命令简单讲一下。- @pv -r0 -d 1000 进程 >Nul 2>Nul && shutdown -s -t 10
复制代码
先讲简单的 &&的意思是若成功,就是前面的命令执行成功就 shutdown -s -t 10 就疯狂10秒关机。
@的意思是屏蔽 回显,就是不显示那些杂七杂八的命令行。
pv -r 的意思是 : r 的意思就是repeat ,重复的意思,就是让pv一直重复的在进程中进行检索。
pv -r0 先讲0 ,0跟在pv后面,意思是原文是process found,就是发现了进程,这里的意思就是找到了某个进程的意思。嘿嘿。
那么pv -r0 的意思是 -------重复的去找到某个进程.
pv -d -d的意思是delay,学过英语的人都知道delay是延时的意思,后面跟毫秒单位 。1000毫秒,等于 1秒,就是每1 秒钟重复一次 去找某个进程。后面跟一个进程名字。例如explorer.exe等等,如果你的收费端是pubwinclient.exe ,就跟到后面就可以了
综合起来分析一下。 ^_^
可以这样理解
每一秒钟重复的去发现某个进程,如果真的发现了(执行成功了)就执行 shutdown -s -t 关机命令。- pv -r0 -d 1000 pubwinclient.exe && shutdown -s -t 10
复制代码
==================================================================
说个题外话,现在破解系统很厉害,这个命令对于菜鸟很关用对于老鸟基本上没有一点作用
其实完全可一做一个防止关机的东西去实现免费上网的目的很强大的防锁专家,以及 幽灵辅助工具,很多防关机的软件都可以实现这个目的,就是你远程关机也没有用的,我是婶有体会的。 ^_^
除非pubwin一直在升级,想到更绝更牛比的关机程序,要不染这招没有一点用
还是要用新管理,破解的几率会小些。努力哈 ^_^
[ 本帖最后由 lixiaodaoaaa 于 2008-9-29 15:18 编辑 ]
作者: zqz0012005 时间: 2008-9-29 15:22
不使用第三方工具,则内存占用稍高。每隔1分钟检测一次- @echo off
- if "%~1"=="" (start /min mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 hide",0)(Window.close) & exit)
- :loop
- tasklist|find /i "进程.exe" >nul 2>nul || shutdown -f -s -t 0
- ping -n 1 -w 60000 unExistIP
- goto loop
复制代码
[ 本帖最后由 zqz0012005 于 2008-9-29 19:33 编辑 ]
作者: pusofalse 时间: 2008-9-29 16:55
当然如此,已经说明pv是第三方工具,需要下载。- -|||||||||||||
作者: shenmeshibat 时间: 2008-10-2 16:22 标题: 哈哈
哈哈哈,真好笑。
'pv' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
作者: wesbow 时间: 2008-10-13 11:03
我是学校机房用极域上课的,情况应该和你差不多,我是这样实现如果进程不存在则重启,不用第三方工具
检测进程:
@echo off
rem 重启应该使用-r
tasklist|findstr /i "StudentMain.exe" ||shutdown -r -t 10 -c "由于你恶意关闭了电子教室,所以你将面临着重启的后果!"
rem ping的第一条消息是不需要等待的,所以延时10秒,应该用-n 11
ping 127.1 -n 11 >nul 2>nul
rem 不必使用循环,call一下自己就行了
call %0
后台运行:
保存为VBS,放到启动项里
set ws=createobject("wscript.shell")
ws.run "cmd /c C:\Progra~1\time.bat",vbhide
只是这个还有一个缺陷,可以在进程中找到CMD的进程,如果结束这个进程,上面的就无效了,希望能有高手解决一下,不用第三方工具隐藏进程
[ 本帖最后由 wesbow 于 2008-10-13 11:07 编辑 ]
作者: fly2never 时间: 2008-10-28 15:38
请问我怎么用pv实现这个功能?
如果没有发现XX进程,则启动XX程序
我用pv -r0 -d 1000 pubwinclient.exe &||start不行的
作者: pusofalse 时间: 2008-10-28 15:40 标题: 回复 9楼 的帖子
pv xx.exe 2>nul||start "" "a.exe"
作者: fly2never 时间: 2008-10-28 15:47
原帖由 pusofalse 于 2008-10-28 15:40 发表
pv xx.exe 2>nul||start "" "a.exe"
我想实现这样,让pv一直在内存中运行,每分钟,检测一次监视的进程,如果进程不存在,则启动相应的程序来重启该进程.
pv xx.exe 2>nul||start "" "a.exe" 是一次性的
pv -r -d 60000 XX.exe 2>nul||start "" "a.exe" 也不行,一旦进程不在了,就不会自动启动了
作者: pusofalse 时间: 2008-10-28 16:03
- @echo off
- for /l %%a in (1 0 1) do (
- pv a.exe 2>nul||start "" "a.exe"
- pv -r0 -d1000 -x a.exe 2>nul
- )
复制代码
先检测a.exe是否运行,若无,则运行a,exe。若有,继续向下执行:
pv -r0 -d1000 -x a.exe 2>nul
-d1000: 每1000ms检测一次a.exe
-x 等待程序结束: 若发现a.exe运行中,则继续循环检测,一直到a.exe被结束才执行下面的语句goto loop- Modes:
- -s --summary show usage for the specified MODULE
- -h,-? --help display this help information
- Actions:
- -k --kill kill process
- -a --activate brings process main window in the foreground
- -c --close close (send WM_CLOSE) to the PROCESS
- -p[nihr] --priority set priority to "Normal", "Idle", "High", "Real Time"
- [ba] "Below Normal" and "Above Normal" only on W2K or higher
- Output Options:
- -e, --extend show additional information if available
- -l, --long show command line (can also be a filter)
- -q, --quiet supress headers and produce a tab-separated list
- -b --bare show process ID only ()
- Input Options:
- -f, --force never prompt
- -i, --id use process ID instead of the PROCESS name
- Filters:
- -l[mask] --long include processes with command line matching mask
- -w[mask] --window show processes with visible windows matching mask,
- -e includes in search also invisible windows
- -u[mask] --usage show processes using modules that matches mask
- -t[root] --tree display process tree starting starting from the root
- Extra Information Options:
- -g --getenv get startup environment for the PROCESS
- -m --module show modules used by specified PROCESS
- Execution Options:
- -d[time] --delay delay time in milliseconds before executing command
- -r[err] --repeat repeat command in a cycle, while (%ERRORLEVEL% > err)
- -n --number %ERRORLEVEL% = negated number of matched processes
- -x[a] --exit wait for the process completion (exit)
- 'a' flag waits for all processes, -d sets time-out
- -@[file_name] read arguments from specified file or from
- standard input after processing the command line
- Arguments can contain '*' and '?' wildcards.
- Use return code (%ERRORLEVEL%) in batch files:
- 0 - process found (negated number of processes if -n is specified)
- 1 - empty result set, 2 - programm error
- Examples:
- pv myprocess.exe get process ID for myprocess.exe.
- pv -e get extended list of running processes.
- pv -k sleep* kill all processes starting with "sleep"
- pv -m -e explorer.exe get extended information about explorer's modules
- pv -u oleaut*.dll list of all processes that use matching dll
- pv -ph w*.exe set priority to hight for all matching processes
- pv explorer.exe -l"*/S" looks for explorer process with /S switch
- pv -r0 -d2000 calc.exe "2>nul" checks every 2 seconds if calc.exe is running
复制代码
[ 本帖最后由 pusofalse 于 2008-10-28 16:06 编辑 ]
作者: fly2never 时间: 2008-10-28 16:08 标题: 回复 12楼 的帖子
完美解决了我的问题,非常感谢热心的版主~
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |