スポンサーリンク

【CarotDAV】WebDAV接続設定メモ

無料で使えるWebDAVクライアントソフト「CarotDAV」。日本製でシンプルで安定してて便利に使っています。使っていて、ここは今後のために控えていたほうがいいなと思ったことをメモ。

麗の小屋 – WebDAV Client CarotDAV –

接続に関する設定

Xserverドライブはタイムアウトを30秒以上に?

レンタルサーバーで有名なエックスサーバー が提供しているXserverドライブ に接続する際、たまたまだとは思いますが、デフォルトの10秒では接続に失敗することがありました。10秒の設定でも正常に接続できることもありますが、その場合は30秒以上にするのがベストです。20秒では失敗することがあります。

WebClientサービスの開始自動にする

CarotDAVからWebDAVで接続したリモートのフォルダが開けずエラーになるときは、Windowsサービス「WebClient」が開始されていない可能性があります。このサービスの開始が手動になっている場合は、自動に変更しておきましょう。

WebClientのサービスを再起動するコマンド

コマンドやバッチファイルでサービスの再起動(停止&開始)は以下のコマンドで実行できます。

net stop webclient
net start webclient

DAV Serverに関する設定

ファイルサイズは4GBに

[Tool]-[Setting]-[DAV Server]-[Max File Size]の値を変更

初期設定は50MBになっているところを、4GB(4,294,967,295)に変更。

タスクスケジューラで自動起動する際の注意点

DAV Server使用時に起動でエラーが出るとき

Windowsサインイン時に自動起動させる際、CarotDAVが起動する前にエクスプローラー開くと、CarotDAV起動時にエラー画面が出ます。これはWindowsサービス「WebClient」が開始されていないと起こります。

これが出ると、[DAV Server]で設定した「ネットワークドライブ」がマウントされなかったり、「ネットワークの場所の追加」したのアイコンをクリックしてもWebDAVフォルダがエラーで開けなくなります。うっかりエクスプローラーを開いてしまい、CarotDAVが起動する前に閉じてもダメです。

よって、DAV Serverの機能を使用するは、WebClientサービスが開始されるまで、CarotDAVの起動を遅らせるか、エラーが出ても、WebClientサービスが開始されれば使えるようになります。

バッチファイルを使って最小化起動したいとき

アプリ側でWindows起動時に自動起動させる設定がないので、タスクスケジューラーからバッチファイルで起動させることにしました。以下がそのソース。CarotDavStart.bat

@echo off

taskkill /f /im "CarotDAV.exe"
start /min /b "" "C:\Program Files (x86)\Rei Software\CarotDAV\CarotDAV.exe"

exit

タスクトレイに常駐させたいとき

CarotDAVには起動時にタスクトレイに常駐させる機能が今日現在でありません。そこで、NaiNai(ないない)というフリーソフトを使用すれば可能となります。このソフトは指定したアプリケーションが最小化されたときに、タスクトレイに格納されます。Windows10 proで動作確認済みです。

タスクトレイにCarotDAVが格納された様子。

また、NaiNai(ないない)自体が自動起動でタスクトレイに常駐してくれ、現在起動中のアプリを選択するだけで、簡単にタスクトレイに常駐化させる設定ができ、扱いがとても簡単です。タスクトレイの入ったCarotDAVのアイコンをクリックすれば、ウィンドウがデスクトップに表示されるので、操作感も良いです。

NaiNaiにCarotDAVを設定する画面
NaiNai(ないない)の詳細情報 : Vector ソフトを探す!
どんなアプリのウインドウでもタスクトレイアイコン化して常駐させることが出来る

同様のツールでTaskTrayPlusというフリーソフトも見つけましたが、こちらはページのエラーでダウンロードできませんでした。

NaiNaiとCarotDAVを自動実行させるスクリプト

Windowsを起動時に、CarotDAVをタスクトレイに常駐化させた状態で起動したい場合、現時点ではその設定がCarotDAVにはありませんので、スクリプトで対応するしかありません。

以下のソースはVBスクリプト(VBS)で、タスクスケジューラ、またはスタートアップでNaiNaiとCarotDAVを起動し、CarotDAVをショートカッキーで最小化させると、NaiNaiがCarotDAVをタスクトレイに格納してくれる動作をします。メモ帳などで、CarotDavStart.vbsなど適当に名前を付けて保存してご利用ください。
Windows11/10 Pro x64環境でうまく動作しています。
なお、パスに日本語が入っているので、Shift-JISで保存しないとエラーがでます。実行時にエラーが出たらUTF-8になっているかもしれません。

Option Explicit

Const vbMinimized = 7

Const NAINAI_EXE = "Nainai.exe"
Const NAINAI_PATH = "C:\Program Files (x86)\あいそび\NaiNai\Nainai.exe"

Const CAROTDAV_EXE = "CarotDAV.exe"
Const CAROTDAV_PATH = "C:\Program Files (x86)\Rei Software\CarotDAV\CarotDAV.exe"

Const TIMEOUT_SEC = 60
Const POLL_INTERVAL_MS = 1000

Dim objWshShell
Set objWshShell = CreateObject("WScript.Shell")

' --- このスクリプト自体の多重起動を防ぐ ---
Dim lockDir
If Not AcquireScriptLock(lockDir) Then WScript.Quit

' --- まず、別スタートアップで Nainai.exe が起動するのを待つ ---
If Not WaitForProcess(NAINAI_EXE, TIMEOUT_SEC) Then
' 60秒待っても起動していなければ、このスクリプトから起動
objWshShell.Run Quote(NAINAI_PATH), 0, False

' 起動確認
Call WaitForProcess(NAINAI_EXE, TIMEOUT_SEC)
End If

' --- CarotDAV.exe を起動して最小化 ---
Dim startedCarotDAV
startedCarotDAV = False

If Not IsProcessRunning(CAROTDAV_EXE) Then
startedCarotDAV = True
objWshShell.Run Quote(CAROTDAV_PATH), vbMinimized, False
Call WaitForProcess(CAROTDAV_EXE, 30)
WScript.Sleep 5000
Else
WScript.Sleep 2000
End If

ReleaseScriptLock lockDir

Set objWshShell = Nothing

' -----------------------------------------------
' 指定プロセスが実行中か WMI で確認
' -----------------------------------------------
Function IsProcessRunning(imageName)
Dim oWMI, oProcesses, oProcess, q

IsProcessRunning = False

Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
q = "SELECT ProcessId FROM Win32_Process WHERE Name = '" & imageName & "'"

On Error Resume Next
Set oProcesses = oWMI.ExecQuery(q)
If Err.Number <> 0 Then
Err.Clear
Exit Function
End If
On Error GoTo 0

For Each oProcess In oProcesses
IsProcessRunning = True
Exit Function
Next
End Function

Function WaitForProcess(imageName, timeoutSec)
Dim waitedMs
waitedMs = 0

Do
If IsProcessRunning(imageName) Then
WaitForProcess = True
Exit Function
End If

If waitedMs >= timeoutSec * 1000 Then Exit Do

WScript.Sleep POLL_INTERVAL_MS
waitedMs = waitedMs + POLL_INTERVAL_MS
Loop

WaitForProcess = False
End Function

Function Quote(path)
Quote = """" & path & """"
End Function

' -----------------------------------------------
' スクリプト多重起動防止用ロック
' -----------------------------------------------
Function AcquireScriptLock(ByRef lockDir)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

lockDir = objWshShell.ExpandEnvironmentStrings("%TEMP%") & "\NainaiCarotDAVStartup.lock"

On Error Resume Next

' 異常終了でロックが残った場合の保険。10分以上古ければ削除。
If fso.FolderExists(lockDir) Then
If DateDiff("n", fso.GetFolder(lockDir).DateLastModified, Now) >= 10 Then
fso.DeleteFolder lockDir, True
End If
End If

Err.Clear
fso.CreateFolder lockDir

AcquireScriptLock = (Err.Number = 0)

Err.Clear
On Error GoTo 0
End Function

Sub ReleaseScriptLock(lockDir)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next
If fso.FolderExists(lockDir) Then
fso.DeleteFolder lockDir, True
End If
On Error GoTo 0
End Sub

注意点:NumLockのON/OFFが勝手に起こる

ただし、VBSのバグでNumLockのOFF/ONが動作の最後、勝手に起こりますが、デスクトップPCで特に支障がないので、放置していますが、勝手にONになると困る場合、対処するコードを追加しないといけないかもしれません。そういった参考のソースは、検索すると沢山ヒットします。

再起動/シャットダウン時にエラーが出るとき

CarotDAVをタスクトレイに常駐化させていると、再起動やシャットダウン時にエラーが出ます。そんなときは以下のバッチファイルを作成し、グループポリシーエディター (gpedit.msc) > ユーザーの構成 > Windows設定 > スクリプト > ログオフに登録すれば、シャットダウン時にエラーなくCarotDAVを終了できます。

@echo off
taskkill /f /im "CarotDAV.exe" 2>nul
グループポリシーエディター (gpedit.msc) > ユーザーの構成 > Windows設定 > スクリプト > ログオフ

タイトルとURLをコピーしました