WinSW
用于将
.exe注册为服务,实现静默自启长期运行。
Github:下载地址
配置文件
配置文件名与winsw名称保持一致,并不固定,如果是winsw.exe则配置为winsw.xml
<!-- 来自:https://github.com/winsw/winsw/blob/v3/samples/complete.xml -->
<!-- 说明:https://github.com/winsw/winsw/blob/v3/docs/xml-config-file.md -->
<service>
<!--
SECTION: 必填选项
其他部分的所有选项均为可选
-->
<!-- ❗服务 ID,必须在整个 Windows 系统中唯一 -->
<id>serviceName</id>
<!-- ❗要启动的可执行文件路径 -->
<executable>%BASE%\appName.exe</executable>
<!-- 服务在“服务”管理界面中显示的名称 -->
<!--
<name>MyApp Service (powered by WinSW)</name>
-->
<!-- 服务描述文字 -->
<!--
<description>这是通过示例配置文件创建的服务</description>
-->
<!--
SECTION: 安装相关选项
这些选项仅在安装时使用。
修改后需重新安装服务才会生效。
-->
<!--
选项:serviceaccount
指定服务运行所使用的账户
-->
<!--
<serviceaccount>
<username>YOURDOMAIN\useraccount</username>
<password>Pa55w0rd</password>
<allowservicelogon>true</allowservicelogon>
</serviceaccount>
-->
<!--
选项:onfailure
当被管理的可执行文件失败时,应执行的动作序列
支持的动作:restart(重启)、reboot(重启计算机)、none(不执行任何操作)
-->
<!--
<onfailure action="restart" delay="10 sec"/>
<onfailure action="restart" delay="20 sec"/>
<onfailure action="reboot" />
-->
<!--
选项:resetfailure
Windows 服务重置“失败计数”的时间
默认值:1 天
-->
<!--
<resetfailure>1 hour</resetfailure>
-->
<!--
选项:securityDescriptor
以 SDDL 格式表示的服务安全描述符
更多信息:https://docs.microsoft.com/windows/win32/secauthz/security-descriptor-definition-language
-->
<!--<securityDescriptor></securityDescriptor>-->
<!--
SECTION: 可执行文件管理
-->
<!--
选项:arguments
要传递给可执行文件的启动参数
-->
<!--
<arguments>-classpath c:\cygwin\home\kohsuke\ws\hello-world\out\production\hello-world
test.Main</arguments>
-->
<!--
选项:startarguments
启动时传递给可执行文件的参数。
如果设置了此项,将覆盖普通的 arguments
-->
<!--
<startarguments></startarguments>
-->
<!--
选项:workingdirectory
指定可执行文件的工作目录
默认值:服务包装器可执行文件所在目录
-->
<!--
<workingdirectory>C:\myApp\work</workingdirectory>
-->
<!--
选项:hidewindow
如果为 true,则以不显示窗口的方式(CreateNoWindow=true)启动程序
默认值:false
-->
<!--
<hidewindow>true</hidewindow>
-->
<!--
选项:priority
期望的进程优先级
可选值:Normal, Idle, High, RealTime, BelowNormal, AboveNormal
默认值:Normal
-->
<priority>Normal</priority>
<!--
选项:stoptimeout
等待服务正常关闭可执行文件的时间,超时后将强制终止
默认值:15 秒
-->
<stoptimeout>15 sec</stoptimeout>
<!--
选项:stopexecutable
(可选)用于执行关闭动作的额外可执行文件
仅在同时指定了 stoparguments 时才会使用此程序
-->
<!--
<stopexecutable>%BASE%\stop.exe</stopexecutable>
-->
<!--
选项:stoparguments
终止服务时传递给停止可执行文件的参数
设置此选项也会启用“通过停止可执行文件来终止服务”的行为
-->
<!--
<stoparguments>-stop true</stoparguments>
-->
<!--
SECTION: 服务管理
-->
<!--
选项:startmode
服务的启动类型
支持值:Automatic(自动)、Manual(手动)、Boot、System(后两者仅限驱动服务)
默认值:Automatic
-->
<startmode>Automatic</startmode>
<!--
选项:delayedAutoStart
如果 startmode 为 Automatic,可启用“延迟自动启动”
请参考 WinSW 文档了解支持的平台版本与限制
-->
<!--<delayedAutoStart>true</delayedAutoStart>-->
<!--
选项:depend
指定本服务启动前必须先启动的其他服务
-->
<!--
<depend>Eventlog</depend>
<depend>W32Time</depend>
-->
<!--
选项:interactive
表示服务是否可以与桌面交互(极少使用,安全性较低)
-->
<!--
<interactive>true</interactive>
-->
<!--
SECTION: 日志记录
-->
<!--
选项:logpath
自定义服务包装器生成的所有日志的存储目录
默认值:包装器可执行文件所在目录
-->
<!--
<logpath>%BASE%\logs</logpath>
-->
<!--
选项:log
定义被管理可执行文件日志的处理方式
支持的模式:
append - 追加到现有日志
none - 不将日志保存到磁盘
reset - 启动时清空日志文件
roll - 按大小滚动日志
roll-by-time - 按时间滚动日志
rotate - 按大小轮转(8个文件,每个10MB)已弃用,建议使用 roll
默认模式:append
-->
<log mode="append">
<!--
<setting1/>
<setting2/>
-->
</log>
<!--
SECTION: 环境变量设置
-->
<!--
选项:env
设置或覆盖环境变量,可配置多条
-->
<!--
<env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" />
<env name="LM_LICENSE_FILE" value="host1;host2" />
-->
<!--
选项:download
在启动前由包装器执行的文件下载列表
-->
<!--
<download from="http://www.google.com/" to="%BASE%\index.html" />
-->
<!--
SECTION: 其他选项
-->
<!--
选项:beeponshutdown
如果操作系统支持,服务关闭完成时发出蜂鸣声
-->
<!--
<beeponshutdown>true</beeponshutdown>
-->
<!--
SECTION: 扩展功能
此部分允许指定自定义扩展
更多信息:https://github.com/winsw/winsw/blob/master/docs/extensions/extensions.md
-->
<!--
<extensions>
...
</extensions>
-->
</service>
安装
将会产生winsw.wrapper.log日志文件
./winsw install
启动
./winsw start
注意事项
!IMPORTANT
服务注册后,不要改变配置中定义要启动的
.exe的路径,否则服务将无法启动
移除服务方法
以管理员身份运行命令
sc delete 服务名
webdav
开源的webdav服务,将此项目放置在需要开启webdav的目录下即可
Github:下载地址
配置文件
# 网络相关设置
address: 0.0.0.0 # 服务器监听地址。0.0.0.0表示监听所有可用的网络接口。
port: 6065 # 服务器监听的端口号。
# 如果希望直接启用TLS(传输层安全协议)的相关设置。
tls: false # 是否启用TLS(即HTTPS)。默认为 false。
cert: cert.pem # TLS证书文件路径。
key: key.pem # TLS私钥文件路径。
# 应用于WebDAV路径的前缀。默认为'/'。
prefix: /
# 调试日志。默认为'false'。
debug: false
# 是否禁用探测文件内容类型(Content-Type)。默认为'false'。
noSniff: false
# 服务器是否运行在可信代理之后。当此项为true时,
# 将使用X-Forwarded-For头信息来记录登录尝试的远程地址(如果该头信息存在)。
behindProxy: false
# 用户连接后可以访问的目录。
# 除非用户定义了属于自己的'directory',否则将使用此目录。
# 默认为'.'(当前目录)。
directory: .
# 用户的默认权限。此选项不区分大小写。可能的
# 权限包括:C(创建)、R(读取)、U(更新)、D(删除)。可以组合多个
# 权限。例如,允许读取和创建,设置为"RC"。默认为"R"。
permissions: CRUD
# 用户的默认权限规则。默认为空(无规则)。规则按从后到前的顺序应用,
# 即,从列表末尾开始,第一个匹配请求的规则将被应用于该请求。
# 规则中的路径总是相对于用户的目录。
rules: []
# 为用户重定义规则的行为。可选值有:
# - overwrite(覆盖):当用户定义了规则时,这些规则将覆盖任何已定义的全局规则。
# 也就是说,全局规则对该用户不再适用。
# - append(追加):当用户定义了规则时,这些规则将被追加到已定义的全局规则之后。
# 也就是说,对于此用户,将先检查其特定规则,然后检查全局规则。
# 默认为'overwrite'。
rulesBehavior: overwrite
# 日志配置
log:
# 日志格式('console'(控制台), 'json'(JSON))。默认为'console'。
format: console
# 启用或禁用颜色显示。默认为'true'。仅当格式为'console'时适用。
colors: true
# 日志输出。可以配置多个输出目标。默认为仅输出到'stderr'(标准错误)。
outputs:
- stderr
# CORS(跨源资源共享)配置
cors:
# 是否应用CORS配置。默认为'false'。
enabled: false
# 是否允许发送凭据(如cookies)。默认为false,此处配置为true。
credentials: true
# 允许的请求头列表。
allowed_headers:
- Depth # WebDAV协议中常用的一个头,用于指定操作深度。
# 允许访问的来源(主机)列表。
allowed_hosts:
- http://localhost:8080 # 例如,允许来自本地开发服务器8080端口的请求。
# 允许的HTTP方法列表。
allowed_methods:
- GET
# 暴露给客户端的响应头列表(即客户端JavaScript可以访问的头信息)。
exposed_headers:
- Content-Length
- Content-Range
# 用户列表。如果列表为空,则不需要身份认证。
# 否则,将自动配置基本身份认证(Basic Authentication)。
#
# 如果您将认证委托给其他服务,可以通过基本认证代理用户名,
# 然后使用以下选项禁用WebDAV自身的密码检查:
#
# noPassword: true
users:
# 示例'admin'用户,使用明文密码。
- username: admin
password: admin
# # 示例'john'用户,使用bcrypt加密的密码,并有自定义目录。
# # 您可以使用'webdav bcrypt'命令行工具生成bcrypt加密的密码。
# - username: john
# password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
# directory: /another/path
# # 示例用户,其详细信息将从环境变量中获取。
# - username: "{env}ENV_USERNAME"
# password: "{env}ENV_PASSWORD"
# - username: basic
# password: basic
# # 覆盖默认权限。
# permissions: CRUD # 拥有创建、读取、更新、删除所有权限。
# rules:
# # 通过此规则,用户将无法访问其目录下的 /some/file 文件。
# - path: /some/file
# permissions: none # 无任何权限。
# # 通过此规则,用户可以在其目录下的 /public/access/ 文件夹内
# # 进行创建、读取、更新和删除操作。
# - path: /public/access/
# permissions: CRUD
# # 通过此规则,用户可以读取和更新所有以.js结尾的文件。
# # 此规则使用正则表达式进行匹配。
# - regex: "^.+.js$"
# permissions: RU # 仅限读取和更新。
访问webdav
win+r输入
\\localhost@6065\DavWWWRoot
或直接在此电脑右键添加网络路径
http://xx.xx.xx.xx:6065