0


零基础创建Windows守护进程,手把手教学。

一、首先新建一个.txt文件,例:Deamon.txt

二、打开新建的.txt文件并将如下代码进行填入,这段代码是一个批处理脚本,用于守护进程("SSCOM33")的运行,如果进程停止,它会自动重新启动。

@echo off

::检测时间间隔,单位:秒
set _interval=5
::需要守护的进程名称
set _processName=SSCOM33

:loop
::检查进程是否运行
tasklist | find "sscom33.exe" > nul

if %errorlevel% neq 0 (
    echo Start %_processName%-%time%
    start "" "F:\sscom33.exe"
)

::等待一段时间再次检查
timeout /t %_interval% /nobreak > nul
goto loop

上述代码详细解释:

  1. @echo off: 这句代码关闭了命令回显,使得在执行过程中不会在命令提示符窗口中显示命令本身。
  2. set _interval=5: 这句代码定义了一个变量 _interval,用于设置循环检查进程状态的间隔时间,这里设置为 5 秒。
  3. set _processName=SSCOM33: 这句代码定义了一个变量 _processName,用于存储进程的名称,这里设置为 "SSCOM33"。(名称为自己任意设定的)
  4. :loop: 这是一个标签,用于创建一个无限循环。
  5. tasklist | find "sscom33.exe" > nul: 这句代码使用 tasklist 命令列出所有正在运行的进程,然后通过管道 | 将输出传递给 find 命令,查找包含 "sscom33.exe" 的行。通过将输出重定向到 nul,只关心命令是否成功执行,不在意输出内容。
  6. if %errorlevel% neq 0: 这是一个条件语句,检查上一个命令的退出码(%errorlevel%)。如果 tasklist | find 命令未找到进程(即退出码不等于 0),则表示进程停止。
  7. 在条件成立的情况下(即进程停止),脚本会使用 echo 命令打印消息,然后使用 start 命令重新启动进程。
  8. timeout /t %_interval% /nobreak > nul: 这句代码使用 timeout 命令暂停脚本的执行,持续一段时间(由 _interval 变量定义),然后再次进行下一轮循环。/nobreak 参数表示用户无法通过按下键盘来终止暂停。
  9. goto loop: 这句代码使脚本跳转回标签 :loop 处,从而创建了一个无限循环,实现了进程守护的功能。

三、保存为一个

(.bat)

文件,例如:Deamon.bat:

需要注意的是:本人守护的进程为“sscom33.exe”,文件目录为“F:\sscom33.exe”,根据自己需求进行更改。

四、(若需要脚本在后台运行)用户不会看到命令提示符窗口。需要将下面两句代码保存为扩展名为.vbs的文件,然后和上述.bat放在同一目录下,双击运行。

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "deamon.bat",0

上述代码详细解释:

这两句代码是用于在 Windows 脚本宿主(WSH)环境中运行的,用于执行名为 "deamon.bat" 的批处理脚本。

  1. set ws=WScript.CreateObject("WScript.Shell"): 这句代码创建了一个名为 ws 的 WScript.Shell 对象。WScript.Shell 是 Windows 脚本宿主中的一个对象,它允许你在脚本中执行各种操作,包括运行程序、访问环境变量、创建快捷方式等。
  2. ws.Run "deamon.bat",0: 这句代码使用 Run 方法来运行名为 "deamon.bat" 的批处理脚本。0 参数表示以隐藏的方式运行程序,即在后台执行,不会显示命令提示符窗口。

总结起来,这两句代码的作用是创建一个 WScript.Shell 对象,然后使用该对象的

Run

方法以隐藏方式运行名为 "deamon.bat" 的批处理脚本。这意味着批处理脚本将在后台运行,用户不会看到命令提示符窗口。


本文转载自: https://blog.csdn.net/Lzw_znc/article/details/132297945
版权归原作者 城北巧公 所有, 如有侵权,请联系我们删除。

“零基础创建Windows守护进程,手把手教学。”的评论:

还没有评论