✧ 君と集まって星座になれたら ✦ ROKUTOSEI
1718 字
9 分钟
在 Windows 上使用 rclone 与 WinSW 挂载 WebDAV 为系统服务
更新于 2026-10-14

为了在本地直接使用播放器观看远端 OpenList 上的视频,我近期将 WebDAV 存储挂载到了 Windows 本地。

起初考虑过编写轻量脚本在开机时静默运行,但这类方式缺乏进程守护、日志追踪能力,遇到网络瞬断退出后不会自动恢复,因此通过 WinSW 将 Rclone 封装为 Windows 系统服务。

准备工作#

本方案基于以下环境与工具:

  • 操作系统:Windows 10
  • 存储工具:Rclone v1.74
  • 内核驱动:WinFsp 2.1
  • 服务封装:WinSW v3(自编译)

1. 安装 WinFsp 驱动#

在 Windows 上通过 Rclone 挂载本地盘符需要依赖 WinFsp 提供的 FUSE 兼容层。

可以使用包管理器安装,在终端中执行:

PowerShell 7
winget install WinFsp.WinFsp

或者使用 Scoop:

PowerShell 7
scoop install winfsp

安装完成后不需要重启电脑,驱动会直接加载就绪。

2. 规划工作目录#

建议建立一个专用的服务目录,例如 D:\Program\rclone-service。

同时,单独规划一个容量充裕的缓存目录,例如 D:\Cache\rclone_cache。

缓存目录所在的分区必须使用 NTFS 文件系统,后续的 VFS 缓存依赖底层对稀疏文件的支持。

在终端中先建好所需目录:

PowerShell 7
New-Item -ItemType Directory -Force -Path "D:\Program\rclone-service\logs", "D:\Cache\rclone_cache"

将编译/下载好的 WinSW.exe 复制到 D:\Program\rclone-service 目录下备用。(winsw官方仓库已经许久未发版,建议浅克隆并自编译)

搭建步骤#

第一步:配置 WebDAV 连接#

在正式挂载前,需要先配置好 Rclone 对 WebDAV 的访问凭据。不建议明文密码直接写入文件,可以使用 Rclone 自带的加密命令对密码进行混淆处理:

PowerShell 7
rclone obscure "你的实际密码"

执行后终端会输出一段经过混淆的字符串。

接下来在 D:\Program\rclone-service 目录下创建 rclone.conf 配置文件,内容如下:

[openlist]
type = webdav
url = https://openlist.example.com:443/dav/
vendor = other
user = your_username
pass = 刚才输出的混淆字符串

不懂的参数请前往官方文档查阅:https://doc.oplist.org/guide/advanced/webdav

配置完成后,可以先在命令行中测试一下与远端服务的网络连通性:

PowerShell 7
rclone lsd openlist: --config "D:\Program\rclone-service\rclone.conf"

如果控制台能够正常列出服务端的目录,说明基础网络和凭据均已正确。

我的远端目录有 Anime 文件夹,进一步测试查看子目录的命令是:

PowerShell 7
rclone lsd openlist:Anime --config "D:\Program\rclone-service\rclone.conf"

第二步:编写 WinSW 服务文件#

在 D:\Program\rclone-service 目录下创建名为 WinSW.xml 的服务定义文件。

将服务定义文件与主程序同名命名为 WinSW.xml,可以让 WinSW 在执行常用命令时默认加载,省去每次输入配置路径的麻烦。文件完整内容如下:

<service>
<id>rclone-openlist</id>
<name>Rclone OpenList Mount</name>
<description>Mount OpenList WebDAV as O</description>
<executable>rclone</executable>
<workingdirectory>%BASE%</workingdirectory>
<!-- 挂载参数针对流媒体播放优化,路径均采用自包含变量 -->
<arguments>mount openlist:Anime O: --config "%BASE%\rclone.conf" --vfs-cache-mode full --cache-dir "D:\Cache\rclone_cache" --vfs-cache-max-size 30G --vfs-cache-max-age 24h --vfs-disk-space-total-size 931G --buffer-size 16M --vfs-read-ahead 0 --vfs-read-chunk-size 8M --vfs-read-chunk-size-limit 2G --vfs-fast-fingerprint --volname "OpenList-Anime" --network-mode --log-file "%BASE%\logs\rclone.log" --log-level INFO</arguments>
<!-- 日志轮转单文件上限 2 MB,保留最近 5 份 -->
<log mode="roll-by-size">
<logpath>%BASE%\logs</logpath>
<sizeThreshold>2048</sizeThreshold>
<keepFiles>5</keepFiles>
</log>
<!-- 崩溃重试 -->
<onfailure action="restart" delay="10 sec"/>
<onfailure action="restart" delay="30 sec"/>
<onfailure action="restart" delay="1 min"/>
<resetfailure>1 hour</resetfailure>
<priority>Normal</priority>
<stoptimeout>15 sec</stoptimeout>
</service>

说明#

  1. %BASE%:WinSW 的内置环境变量,指向 WinSW.exe 所在的当前目录。使用该变量可以让服务目录整体迁移时不需要修改内部路径。
  2. --vfs-cache-mode full:开启完整的 VFS 缓存。此模式下 Rclone 会在本地创建稀疏文件,只把播放器真正读到的数据缓存到本地,支持播放器随意拖动进度条。
  3. --cache-dir "D:\Cache\rclone_cache":将缓存统一放在专用的存储目录,避免占用系统盘。
  4. --vfs-cache-max-size 30G 与 --vfs-cache-max-age 24h:设置缓存上限为 30GB,且数据在 24 小时未访问后自动清理。
  5. --vfs-read-ahead 0:将强制预读关闭。流媒体播放大文件时,如果设置了过大的预读值,Rclone 会持续下载文件开头的数据并占满带宽,导致播放器跳到文件末尾读取索引的请求排队超时。关闭预读后,数据拉取完全由播放器的实际寻道请求按需触发。
  6. --vfs-read-chunk-size 8M:将初始数据分块从默认的 128M 降低到 8M,加快视频首帧和尾部索引数据的响应速度。
  7. --vfs-disk-space-total-size 931G:手动指定虚拟磁盘的总容量。由于 WebDAV 常常缺少容量配额接口,Rclone 在源码中硬编码了默认填充 1 PiB 作为备用空间。这个参数不加也无所谓,不影响。
  8. --network-mode 与 --volname "OpenList-Anime":通知 WinFsp 以网络共享卷的形式暴露给系统,并为盘符设置直观的卷标名称。
  9. <onfailure>:配置系统服务异常退出后的自动重启策略,即使遇到网络波动中断,WinSW 也会在后台自动尝试重新拉起。

第三步:配置注册表启用提权互通#

Windows 服务默认以 SYSTEM 账户在 Session 0 中运行,而普通桌面和文件管理器运行在用户会话中。

按照本文档配置的是以服务形式挂载的网络驱动器,为了能够在桌面环境中被正常访问,需要修改一次注册表项。

以管理员身份打开终端,执行以下命令:

PowerShell 7
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLinkedConnections" -Value 1 -Type DWord -Force

该设置确保提权进程与非提权进程之间共享网络驱动器映射,配置一次即可长期生效。

第四步:注册并启动系统服务#

以管理员身份打开终端,进入服务所在目录执行安装与启动命令:

PowerShell 7
cd D:\Program\rclone-service
# 安装系统服务
.\WinSW.exe install
# 启动服务
.\WinSW.exe start

如果使用的是 WinSW v3,可以使用自带的调试命令检查进程拓扑:

PowerShell 7
.\WinSW.exe dev ps

控制台会以树状形式打印出 WinSW 主服务进程以及由它拉起的 rclone.exe 子进程,能确认后台服务是否正常托管。

第五步:Test#

服务启动后,打开 Windows 资源管理器,即可看到新增了一个卷标为 OpenList-Anime (O:) 的网络驱动器。

进入该盘符,尝试使用视频播放器打开一个 1GB 以上的文件,如果视频能在短时间内正常开始播放,且拖动时间轴进度条时画面能够迅速加载,说明按需寻道与分块缓存参数均已生效。

如果遇到加载异常,可以打开 D:\Program\rclone-service\logs\rclone.log 查看 Rclone 日志。

后话#

目前这套配置我已在已连续运行 31 天。

在经历日常休眠唤醒以及网络环境切换后,服务均能正常维持,O 盘没有出现脱机现象。

使用播放器播放大码率视频时,进度条拖动与索引加载相对流畅,达到了期望目标。

Rokutosei
Rokutosei ✦ 六等星
“君と集まって星座になれたら”
在 Windows 上使用 rclone 与 WinSW 挂载 WebDAV 为系统服务
https://blog.rokutosei.com/posts/seedbox/rclone-mount-openlist-windows/
作者
Rokutosei
发布于
2026-10-14
修改于
2026-10-14
许可协议
CC BY-NC-SA 4.0
✧ 文章目录 ✦
1
准备工作
1. 安装 WinFsp 驱动
2. 规划工作目录
2
搭建步骤
第一步:配置 WebDAV 连接
第二步:编写 WinSW 服务文件
第三步:配置注册表启用提权互通
第四步:注册并启动系统服务
第五步:Test
3
后话