OneKuma

OneKuma's Blog

One Lonely Kuma.
github
bilibili
twitter

Windows 上で WebDAV をマウントする

接着上文 折腾了一下阿里云盘 + AList + Rclone + AnimePaste 继续倒腾。

上文使用了 rclone 将 WebDAV 挂载到本地目录,而且必须在 Terminal 里手动运行一下脚本,并且 Terminal 还不能退出,所以我们现在要让他开机自动在后台启动。

更新 1:试用了一周后,体验不是很好,rclone 挂载的本地目录非常不稳定。时常出现卡死,且长时间未响应,不容易自动恢复;挂载点会因为关机不当,rclone 未正常终止等原因,导致无法被占用,无法重新挂载。搜了搜发现 Windows 原生就有相关的实现,例如 OneDrive 就在背后使用了 WebDAV。

更新 2:又试用了一段时间 Windows 原生提供的 WebDAV,依然不好用。问题有偶尔发生的开机自动挂载失败,需要手动点一下,估计原因是它挂载的时候 AList 仍未启动。其次,在挂载刚刚启动或者 AList 重启后,偶尔发生读取文件会失败一次。第三,用 VS Code 打开后,不知道为什么会给 AList 大量并发请求,容易发生各种奇怪的问题。第四,用 VS Code 编辑文本文件时,会发生缓存不一致的问题。最后,现在换用了 RaiDrive,目前似乎有观察到缓存不一致的问题,但可能 VS Code 有一部分锅,其它除了没充钱开机带了个广告外,没有问题,体验最佳。

方案一:RaiDrive#

官网:https://www.raidrive.com/

ダウンロード、インストール、UI 上でクリックするだけで簡単にできます。

方案二:Windows 原生提供的网络驱动器映射#

ファイルエクスプローラーで「この PC」を右クリックし、「ネットワークドライブのマッピング...」を選択します。

image

マッピングしたいドライブを選択し、ローカル / リモートの AList のアドレスを入力します。

image

AList のユーザー名とパスワードを入力します。

image

他の WebDAV も同様です。

問題が発生する可能性#

  1. コントロールパネルで WebDAV を有効にする必要がある場合があります。[コントロールパネル] - [プログラム] - [Windows の機能の有効化または無効化] にあります。

image

  1. ローカルネットワーク内の WebDAV が HTTP プロトコルであり、HTTPS プロトコルではない場合、「ネットワーク名が見つかりません」というエラーが発生する可能性があります。[レジストリエディタ] を開き、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters」を見つけ、キー「BasicAuthLevel」の値を 2 に変更して、HTTP と HTTPS の両方を許可します。

方案三:rclone + nssm#

マウントスクリプト#

マウントスクリプトを少し変更する必要があります:

  1. rcloneを絶対パスに置き換える;
  2. --configのパスを指定する(現在の設定ファイルのパスをrclone config fileで確認できます);
  3. マウントはディレクトリではなく、個別のドライブにマウントする方が安定するようです。
# mount-anime.ps1

D:\bin\rclone mount "alist:/" "R:" `
  --config "C:\Users\<あなたのシステムユーザー名>\AppData\Roaming\rclone\rclone.conf" `
  --header "Referer:https://www.aliyundrive.com/" `
  --vfs-cache-mode full --vfs-read-chunk-size-limit 1G --vfs-read-chunk-size 512M `
  --cache-dir "D:\.cache\rclone" --dir-cache-time 1m --buffer-size 128M `
  -o UserName="<あなたのシステムユーザー名>" -o GroupName="Authenticated Users"

注意
後で nssm でこのスクリプトを実行すると、現在のユーザーではなく別のユーザーから実行されるため、PATH 環境変数がないです;
また、ログインユーザーの権限のため、マウントディレクトリの権限に問題があります。コマンドの最後の行は、Mount Permission (Windows)を参考にして、私が遭遇した権限の問題を修正することができるようです。

nssm#

nssmをダウンロードします。これは Windows の Non-Sucking Service Manager です。

nssm 2.24をダウンロードして解凍し、実行可能ファイルをPATHのディレクトリにコピーします(ここでは一貫してD:\bin\を使用しています)。次に、以下のコマンドを入力して nssm の古風な GUI を開き、mount-animeという名前のサービスを作成します。

nssm install mount-anime

以下の設定を入力します:

  • Application - Path:PowerShell の絶対パス(例:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe);
  • Application - Startup directory:任意の場所;
  • Application - Arguments前述のマウントスクリプトの絶対パス
  • I/Ostdout / stderrをファイルにリダイレクトしてデバッグを容易にすることをお勧めします。

作成が完了したら、管理者モードのターミナルでサービスを起動します。

nssm start mount-anime
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。