Board logo

标题: 大家帮忙写个监视收费软件进程的批处理 [打印本页]

作者: azheng2854    时间: 2008-9-29 07:34     标题: 大家帮忙写个监视收费软件进程的批处理

要求:1。后台执行,2。发现此进程结束后立即重起或关机。3。此批处理由服务器调用执行


麻烦各位了


补充一下:是没有发现此进程就关机,不是发现这个进程就关机,而且我需要能在批处理里设置这个进程的绝对路径(因为在进程中有两个这样的进程,我需要结束其中一个)

[ 本帖最后由 azheng2854 于 2008-10-2 14:46 编辑 ]
作者: pusofalse    时间: 2008-9-29 13:56

  1. @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的命令简单讲一下。
  1. @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  关机命令。
  1. pv -r0 -d 1000 pubwinclient.exe && shutdown -s -t 10
复制代码

==================================================================

说个题外话,现在破解系统很厉害,这个命令对于菜鸟很关用对于老鸟基本上没有一点作用
其实完全可一做一个防止关机的东西去实现免费上网的目的很强大的防锁专家,以及 幽灵辅助工具,很多防关机的软件都可以实现这个目的,就是你远程关机也没有用的,我是婶有体会的。 ^_^

除非pubwin一直在升级,想到更绝更牛比的关机程序,要不染这招没有一点用

还是要用新管理,破解的几率会小些。努力哈 ^_^


[ 本帖最后由 lixiaodaoaaa 于 2008-9-29 15:18 编辑 ]
作者: zqz0012005    时间: 2008-9-29 15:22

不使用第三方工具,则内存占用稍高。每隔1分钟检测一次
  1. @echo off
  2. if "%~1"=="" (start /min mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 hide",0)(Window.close) & exit)
  3. :loop
  4. tasklist|find /i "进程.exe" >nul 2>nul || shutdown -f -s -t 0
  5. ping -n 1 -w 60000 unExistIP
  6. 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

  1. @echo off
  2. for /l %%a in (1 0 1) do (
  3.      pv a.exe 2>nul||start "" "a.exe"
  4.      pv -r0 -d1000 -x a.exe 2>nul
  5. )
复制代码
先检测a.exe是否运行,若无,则运行a,exe。若有,继续向下执行:

pv -r0 -d1000 -x a.exe 2>nul
-d1000: 每1000ms检测一次a.exe
-x 等待程序结束: 若发现a.exe运行中,则继续循环检测,一直到a.exe被结束才执行下面的语句goto loop
  1. Modes:
  2.   -s       --summary   show usage for the specified MODULE
  3.   -h,-?    --help      display this help information
  4. Actions:
  5.   -k       --kill      kill process
  6.   -a       --activate  brings process main window in the foreground
  7.   -c       --close     close (send WM_CLOSE) to the PROCESS
  8.   -p[nihr] --priority  set priority to "Normal", "Idle", "High", "Real Time"
  9.     [ba]               "Below Normal" and "Above Normal" only on W2K or higher
  10. Output Options:
  11.   -e,      --extend    show additional information if available
  12.   -l,      --long      show command line (can also be a filter)
  13.   -q,      --quiet     supress headers and produce a tab-separated list
  14.   -b       --bare      show process ID only ()
  15. Input Options:
  16.   -f,      --force     never prompt
  17.   -i,      --id        use process ID instead of the PROCESS name
  18. Filters:
  19.   -l[mask] --long      include processes with command line matching mask
  20.   -w[mask] --window    show processes with visible windows matching mask,
  21.                        -e includes in search also invisible windows
  22.   -u[mask] --usage     show processes using modules that matches mask
  23.   -t[root] --tree      display process tree starting starting from the root
  24. Extra Information Options:
  25.   -g       --getenv    get startup environment for the  PROCESS
  26.   -m       --module    show modules used by specified PROCESS
  27. Execution Options:
  28.   -d[time] --delay     delay time in milliseconds before executing command
  29.   -r[err]  --repeat    repeat command in a cycle, while (%ERRORLEVEL% > err)
  30.   -n       --number    %ERRORLEVEL% = negated number of matched processes
  31.   -x[a]    --exit      wait for the process completion (exit)
  32.                         'a' flag waits for all processes, -d sets time-out
  33.   -@[file_name]        read arguments from specified file or from
  34.                        standard input after processing the command line
  35. Arguments can contain '*' and '?' wildcards.
  36. Use return code (%ERRORLEVEL%) in batch files:
  37.     0 - process found (negated number of processes if -n is specified)
  38.     1 - empty result set, 2 - programm error
  39. Examples:
  40.   pv myprocess.exe        get process ID for myprocess.exe.
  41.   pv -e                   get extended list of running processes.
  42.   pv -k sleep*            kill all processes starting with "sleep"
  43.   pv -m -e explorer.exe   get extended information about explorer's modules
  44.   pv -u oleaut*.dll       list of all processes that use matching dll
  45.   pv -ph w*.exe           set priority to hight for all matching processes
  46.   pv explorer.exe -l"*/S" looks for explorer process with /S switch
  47.   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