exe程序,比如nginx.exe

写一个bat,内容为

@echo off
SET NGINX_HOME=nginx.exe所在的目录
cd %NGINX_HOME%
start nginx.exe

然后讲该bat放入目录C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp此目录可以通过在搜索中直接键入shell:startup运行

使用该方法可以不用下载并配置指定的服务工具,避免有的windows中权限不够无法安装.netframwork3.5无法使用注册服务。

重新开机后可以看到该程序已启动

image-20230417150226804

其他服务比如java服务

不注册系统服务

启动jar的bat

@echo off
cd /d "jar包所在目录"
start javaw -jar "jar包名称.jar"

考虑到jar服务要依赖与一些服务,比如必须等redis启动后再启动

@echo off
SET REDIS_HOME=redis所在的目录
cd %REDIS_HOME%
echo Waiting for Redis to start...

:redis
ping 127.0.0.1 -n 2 > nul
redis-cli ping > nul || goto redis

echo Redis has started, starting your jar...
cd /d "jar包所在目录"
start javaw -jar "jar包名称.jar"

上述情况直接将该bat放置在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp中即可实现开机自启,此目录可以通过在搜索中直接键入shell:startup运行

注册到系统服务(此方法同样适用于exe文件)

下载Windows Service Wrapper 工具
点此下载

jar-service.xml

<service>
  <id>runJar</id>
  <name>runJar Service</name>
  <description>需要自启动服务的描述</description>
  <logpath>日志保存路径</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  <executable>启动jar的bat</executable>
</service>

run.bat

java -jar jar包名称.jar

装载服务

# 安装服务 
jar-service.exe install
# 卸载服务 
jar-service.exe uninstall

自带注册服务的exe如redis

一般来说安装时就会自动注册相关的服务

image-20230417140143350

如果没有注册就自行注册

redis-server.exe --service-install redis.windows.conf

image-20230417140009500