Y

o

k

a

z

e

Win系统注册独立WebDav服务

Kaz
WindowsWebDav
# Tools

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

Copyright © 2025 KAZE. All rights reserved.