このコードが本当に言っていること
「ネットワーク ドライブの割り当て」に WebDAV の URL を入れて数秒待つと、こうなります。
text
\\dav.example.com にアクセスできません
エラー コード: 0x80070043
ネットワーク名が見つかりません。ブラウザでは同じ URL が普通に開く。別の WebDAV クライアントなら接続できる。それでもエクスプローラーはネットワーク名が見つからないと言い続けます。
DNS の問題ではなく、サーバー側もほとんどの場合無関係です。0x80070043 は Win32 エラー 67 を HRESULT に包んだ形で、マイクロソフトのエラーコード一覧では ERROR_BAD_NET_NAME、説明は「The network name cannot be found.」です。0x8007 は Win32 エラーを包むときの接頭辞、0x43 は 10 進の 67 です。コマンドラインでは同じ失敗が「システム エラー 67 が発生しました。」として出るので、net use のエラー 67 のページは同じ原因を別の角度から扱っています。
Windows は WebDAV の初期段階の失敗をすべてこの一文で片づけます。裏にある四つの原因を知っていれば、切り分けは二分で済みます。
| 原因 | 確認方法 | 対処 |
|---|---|---|
| WebClient サービスが停止している | Get-Service WebClient が Stopped | 開始し、スタートアップを自動に |
| 平文 HTTP 上の Basic 認証 | URL が http:// で、パスワードを聞かれないまま失敗する | BasicAuthLevel を 2 に |
| サーバー側で WebDAV が有効でない、パスが違う | curl -I に DAV: ヘッダーが返らない | サイトのルートではなく WebDAV のルートを割り当てる |
| URL の形が違う(スキーム、ポート、サブパス) | ウィザードでは「入力されたフォルダーは有効ではないようです。」も出る | http://host:port/path か、後述の UNC 形式で書く |
マイクロソフトの WebDAV リダイレクターのドキュメントは「システム エラー 67」の条件を六つ挙げています。上の表に入れていない二つは、対象サーバーで IIS が動いていない場合と、Windows 認証の FQDN サイトでプロキシのバイパス設定が抜けている場合です。
1. まず WebClient サービスを起動する
割り当てた WebDAV ドライブは WebClient というサービスが処理します。マイクロソフトは 2023 年 11 月にこれを非推奨とし、そのお知らせの中で「Webclient サービスは Windows で既定では開始されない」と明言しています。つまり素の Windows 11 では、サービスを起動するまで WebDAV の割り当ては必ず失敗します。
管理者権限の PowerShell で確認して起動します。
powershell
Get-Service WebClient | Select-Object Status, StartType
Set-Service -Name WebClient -StartupType Automatic
Start-Service -Name WebClientコマンドプロンプトなら次のとおりです。
cmd
sc.exe config WebClient start= auto
sc.exe start WebClientstart= の後ろの空白は誤植ではありません。マイクロソフトの sc.exe config のリファレンスは、オプションと値の間に空白が必要で、省くと操作が失敗すると書いています。フォーラムでよく回っている start=auto はその省いた形です。
もう一つの罠。WebClient は「WebDAV サーバーではなかったホスト」を覚えていて、ServerNotFoundCacheLifeTimeInSec の既定値は 60 秒です。直してすぐ再試行すると、キャッシュされた失敗が返ってきます。一分待つか、サービスを再起動してから判断してください。
2. http:// への Basic 認証を許可する
ここが一番時間を溶かします。Windows はパスワードを聞くことすらせずに失敗するからです。
WebClient は BasicAuthLevel というレジストリ値を見ます。マイクロソフトが文書化している値は三つで、0 は Basic 認証を無効、1 は SSL のサイトのみ有効、2 は SSL と非 SSL の両方で有効です。既定値は 1 です。http:// のエンドポイントに Basic 認証を組み合わせると、最初の認証のやり取りより前に拒否され、0x80070043 が返ります。
cmd
reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v BasicAuthLevel /t REG_DWORD /d 2 /f
net stop WebClient
net start WebClient再起動は必須です。マイクロソフトのドキュメントも、このキーの値を変えたら WebClient を再起動するか PC を再起動する必要があると書いています。値を変えてすぐ再試行し、同じコードを見て「この対処は迷信だ」と結論する人が多いのは、この一手が抜けているからです。
代償もはっきりしています。レベル 2 は資格情報を平文で送ります。127.0.0.1 なら問題なし、自分で管理するネットワークなら許容範囲、インターネット越しには不適切で、その場合は https:// のエンドポイントを使うべきです。
3. リダイレクターが受け付ける形で URL を書く
エクスプローラーのウィザードにはスキームと、既定以外のポートを含めた完全な URL を入れます。たとえば http://dav.example.com:8080/remote.php/dav/files/alice です。ホスト名だけを入れると SMB として扱われ、WebDAV サーバーには届きません。
コマンドラインでは二つの形が使えます。素の URL 形式はマイクロソフトの解説に NET USE * http://www.example.com として載っています。UNC 形式は DavGetHTTPFromUNCPath 関数のリファレンスに \\server[@SSL][@port][\path] と定義されていて、@SSL が HTTPS、@port は 80 と 443 以外で必要です。
powershell
net use Z: \\dav.example.com@SSL@443\DavWWWRoot\files /user:alice
net use Y: http://127.0.0.1:3211/ /user:anystorageDavWWWRoot は WebDAV サーバーのルートを指す予約名で、マイクロソフト自身の再接続に関するトラブルシューティング記事もこの形を使っています。同じ周辺の資料から二点。WebDAV 拡張の仕様書には、Vista より前のクライアントはポート 80 しか扱えなかったと記録されています。そしてマイクロソフトは、Windows 7 以降 Basic 認証の資格情報は資格情報マネージャーに保持できないと明記しています。つまり Basic 認証の割り当ては、サインイン時に自動で復元されるのではなく、再接続が必要です。
古いパスワードが送られ続けている場合は先に消します。コントロール パネル、資格情報マネージャー、Windows 資格情報でそのホストの項目をすべて削除し、net use Z: /delete で中途半端な割り当てを落としてください。
割り当ては成功するのにコピーが失敗するとき
原因は別です。割り当て自体は通るのに 50MB 前後を超えるファイルが 0x800700DF で落ちるなら、既定値 50,000,000 バイトの FileSizeLimitInBytes です。上限は約 4GB で固定されています。詳しくは Windows の WebDAV 50MB 制限 を参照してください。
ローカルの WebDAV サーバー(AnyStorage の 3211 番)を割り当てる
AnyStorage は自分の PC の中で WebDAV サーバーを動かします。サイドバーの Services、WebDAV タブ、Start を押すと http://127.0.0.1:3211 が得られます。アプリで開いているストレージ接続はすべてこのルートの下のフォルダーとして見えるので、S3 バケット、Cloudflare R2、Backblaze B2、MinIO、Google ドライブ、OneDrive、Dropbox、SFTP ホストを一つのドライブ文字でまとめられます。ネットワークの割り当てであってファイルシステムドライバーではないため、WinFsp のインストールは不要です。
上に書いたことはそのまま当てはまります。エンドポイントは HTTP で、Basic 認証は常に有効なので、BasicAuthLevel を 2 にしないとエクスプローラーは話しかけてくれません。資格情報は WebDAV タブにあり、既定のユーザー名は anystorage、パスワードは初回に生成される 24 文字です。手で打たずにコピーしてください。二つだけ先に言っておくと、無料版ではマウントは読み取り専用で、読み書きは Pro の機能です。またアプリを再起動した後は、そのセッションで一度アプリ内から開いた接続だけがルートに現れます。接続は遅延して行われる仕組みです。
0x80070043 とエラー 67 は同じものですか。
同じです。Win32 エラー 67 が ERROR_BAD_NET_NAME で、0x80070043 はそれを HRESULT に包んだ表現です。エクスプローラーは 16 進、net use は 10 進で表示します。原因も対処も同じです。
BasicAuthLevel を変えたら再起動が必要ですか。
PC の再起動は不要ですが、WebClient サービスの再起動は必要です。net stop WebClient と net start WebClient で十分です。
BasicAuthLevel を 2 にするのは危険ですか。
平文の接続で Basic 資格情報を送ることになり、マイクロソフトのドキュメントも一般論としては強く非推奨としています。ループバックアドレスであれば通信は PC の外に出ません。経路がある場合は HTTPS のエンドポイントを使い、値は 1 のままにしてください。
WebDAV は非推奨になったと聞きました。使えなくなりますか。
2023 年 11 月の非推奨化は、WebClient サービスがもう開発されず、将来のリリースで削除される可能性があるという意味です。現時点では同梱されていて動きます。だからこそ Windows のリダイレクターだけに依存しない方がよい、という話になります。ストレージと直接やり取りするクライアントには、起動すべきサービスも 4GB の上限もありません。
次に読む
- 同じ失敗のコマンドライン版: net use のエラー 67
- 原因が複数あるときの総点検: Windows で WebDAV に接続できないとき
- 割り当て後に大きなファイルが失敗する: Windows の WebDAV 50MB 制限