【CarotDAV】WebDAV接続設定メモ

無料で使えるWebDAVクライアントソフト「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を設定する画面

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

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

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

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

Option ExplicitConst vbMinimized = 7Const 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 = 60Const POLL_INTERVAL_MS = 1000Dim objWshShellSet objWshShell = CreateObject("WScript.Shell")' --- このスクリプト自体の多重起動を防ぐ ---Dim lockDirIf 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 startedCarotDAVstartedCarotDAV = FalseIf Not IsProcessRunning(CAROTDAV_EXE) Then    startedCarotDAV = True    objWshShell.Run Quote(CAROTDAV_PATH), vbMinimized, False    Call WaitForProcess(CAROTDAV_EXE, 30)    WScript.Sleep 5000Else    WScript.Sleep 2000End IfReleaseScriptLock lockDirSet 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    NextEnd FunctionFunction 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 = FalseEnd FunctionFunction 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 0End FunctionSub 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 0End Sub

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

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

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

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

@echo offtaskkill /f /im "CarotDAV.exe" 2>nul

グループポリシーエディター (gpedit.msc) > ユーザーの構成 > Windows設定 > スクリプト > ログオフ

Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。