srvany.exe和instsrv.exe打包exe為windows服務趟的坑
前言
srvany.exe可用於將任何EXE程序作為Windows服務運行。我們可以通過它讓我們的程序以SYSTEM賬戶啟動,或者實現隨機器啟動而自啟動,也可以隱藏不必要的窗口,比如說控制台窗口等等。其它廢話就不多說了,直接進入正題:
部分資源文件來源:https://www.cr173.com/soft/64394.html
可下載的程序:
1、instsrv.exe
2、srvany.exe
安裝服務批處理文件
install.bat
@echo off
cd /d %~dp0
call run-install.bat 你的服務名稱 你要做成服務的可執行文件.exe
pause
run-install.bat
@echo off
rem 參數依次為 服務名稱 可執行文件名稱
@echo 服務名稱:%1
@echo 程序名稱:%2
rem 定義需要運行的程序路徑
set curExe=%~dp0%2
rem 定義注冊表路徑
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服務名稱\Parameters\
rem 定義srvany.exe文件路徑
set sourcePath=%~dp0srvany.exe
rem 進入當前目錄
cd /d "%~dp0"
rem 安裝引導服務
instsrv %1 "%sourcePath%"
@echo 服務添加完成
rem 添加注冊表語法: reg add 注冊表路徑 /v 項名稱 /t 值類型 /d 數據 /f 表示強行修改不提示
rem 名稱 Application 值為你要作為服務運行的程序地址 /d對應的參數有斜杠不是為了轉義引號,而是路徑還有斜杠,默認將引號轉義了,額外添加斜杠是為了保留引號
reg add %regpath% /v AppDirectory /t REG_SZ /d "%~dp0\" /f
rem 名稱 AppDirectory 值為你要作為服務運行的程序所在文件夾路徑
reg add %regpath% /v Application /t REG_SZ /d "%curExe%" /f
rem 名稱 AppParameters 值為你要作為服務運行的程序啟動所需要的參數
reg add %regpath% /v AppParameters /t REG_SZ /f
@echo 注冊表添加完成
注意* 坑來了,單看install.bat文件,你可能只注意要改“你的服務名稱”和“你要做成服務的可執行文件.exe”,但是光改這兩個地方是不行的,還要改run-install.bat里面的 set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\你的服務名稱\Parameters\ 這一行里面的“你的服務名稱”。
刪除服務批處理文件
del.bat
@echo off
cd /d %~dp0
call run-del.bat 你的服務名稱
pause
run-del.bat
@echo off
rem 參數依次為 你的服務名稱
@echo 你的服務名稱:%1
rem 進入當前目錄
cd /d %~dp0
rem 停止服務
net stop %1
rem 卸載引導服務
instsrv %1 remove