VRChat Creator Companion(VCC)白画面→ERR_CONNECTION_RESET 復旧ノート
作成者:りな(Masarina)/サポート:かれん
最終状態:正常起動(「一度だけ管理者として実行」後、通常起動でOK)
1. 事象の概要
- VCC(CreatorCompanion.exe)を起動すると白画面、のちにERR_CONNECTION_RESETやクラッシュダイアログ。
- 内部Webサーバ(
localhost:5476/5477)に接続はできるが応答が返らず、タイムアウトする時期があった。 - 一時期は
PID 4 (System)が 5476/5477 を LISTEN(HTTP.sysがURL予約を掴んでいる状態)。
2. 環境メモ
- OS: Windows 10 (build 26100.6899)
- VCCインストール先: SSD(例:
D:\app\VRChat Creator Companion\) - 設定実体:
%LOCALAPPDATA%\VRChatCreatorCompanion(Roaming側ではなく Local 側に主に生成) - 表示エンジン: Microsoft Edge WebView2
3. 最終的に効いた決定打(再現性あり)
-
netsh winsock reset実行 → PC再起動。 - WebView2 ユーザーデータをリセット(フォルダリネーム)。
- VCCを一度だけ「管理者として実行」。その後は通常起動でOK。
これで白画面/接続リセットが解消。内部Webサーバが安定して応答し始めた。
4. 原因の推定(複合要因)
- ① URL予約 (URLACL) の競合により、
PID 4が 5476/5477 を先に確保 → VCCがバインドできない/不安定。 - ② WebView2キャッシュの破損やWinsockスタックの詰まりにより、接続はできても応答が返らない(デッドロック様)。
- ③ ファイアウォールの許可がプライベート未チェックで反応がブロックされる可能性(今回途中で訂正)。
5. タイムライン(要点)
-
初期:白画面。
http://localhost:5476は ERR_CONNECTION_RESET。 -
調査:
netstatで 5476/5477 の LISTEN が PID 4。servicestateにHTTP://LOCALHOST:5476/等が登録。 -
対処:URLACL削除・追加を試行(
localhost完全一致指定で)。 -
移行:
servicestateに VCCプロセス(CreatorCompanion.exe)がぶら下がるが、localhost 宛 curl がタイムアウト。 -
決着:
winsock reset→再起動、WebView2/設定のリセット後、VCCを一度だけ管理者実行→正常動作。
6. 具体的手順(コピペ集)
6.1 診断コマンド
PowerShell(管理者)
# どのプロセスが掴んでるか(URL登録の生情報)
netsh http show servicestate | Select-String -Pattern ':5476|:5477' -Context 1,6
# URL予約のリスト(出ない環境もある)
netsh http show urlacl | Select-String -Pattern '5476|5477' -Context 2,2
# ポートの状態
netstat -aon | findstr :5476
netstat -aon | findstr :5477
# 疎通テスト
Test-NetConnection 127.0.0.1 -Port 5476
Test-NetConnection 127.0.0.1 -Port 5477
# 実HTTP応答テスト(PowerShellのIWR)
Invoke-WebRequest http://localhost:5476/ -TimeoutSec 5 | Select-Object StatusCode,RawContentLength
CMD(管理者)
netstat -aon | findstr :5476
netstat -aon | findstr :5477
curl.exe -v http://localhost:5476/ --max-time 5
判定の読み方
-
400 Invalid Hostname:URL予約がlocalhost限定のため、127.0.0.1直指定でははじかれただけ(異常ではない)。 -
Operation timed out:到達しているがアプリ側が返していない(WebView2/アプリ層の詰まりを疑う)。
6.2 URL予約(URLACL)の整理
ポイント:削除・追加は 完全一致URL(末尾 / を含む)で。今回の鍵は http://localhost:5476/ と http://localhost:5477/。
PowerShell/CMD 共通(管理者)
netsh http delete urlacl url=http://localhost:5476/
netsh http delete urlacl url=http://localhost:5477/
削除できない場合は、自身のユーザー名で取り直す(Error 1332 のときは whoami で確定名):
for /f "tokens=*" %A in ('whoami') do set ME=%A
netsh http add urlacl url=http://localhost:5476/ user="%ME%"
netsh http add urlacl url=http://localhost:5477/ user="%ME%"
6.3 Winsock リセット(要再起動)
netsh winsock reset
shutdown /r /t 0
6.4 WebView2/VCC設定のリセット(安全な退避方式)
CMD(管理者)
:: WebView2 ユーザーデータをリネーム退避
if exist "%LOCALAPPDATA%\Microsoft\EdgeWebView" ren "%LOCALAPPDATA%\Microsoft\EdgeWebView" "EdgeWebView.old_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
:: VCC 設定(Local/Roaming)をリネーム退避
if exist "%LOCALAPPDATA%\VRChatCreatorCompanion" ren "%LOCALAPPDATA%\VRChatCreatorCompanion" "VRChatCreatorCompanion.old_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
if exist "%APPDATA%\VRChatCreatorCompanion" ren "%APPDATA%\VRChatCreatorCompanion" "VRChatCreatorCompanion.old_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
6.5 ファイアウォール/プロキシ
-
Windows Defender ファイアウォールで
CreatorCompanion.exeのプライベート許可を付ける(小文字の別名エントリも許可済みに)。 -
netsh winhttp reset proxy(WinHTTPプロキシを直結に戻す)。
6.6 応急運用 & 予備策
-
ブラウザで
http://localhost:5476を直接開き、VCCのUIを使って作業再開(WebView2側だけ詰まる場合の回避)。 -
ポート変更:
config.jsonが生成されていれば5476/5477 → 5580/5581に数字置換。- 場所:
%LOCALAPPDATA%\VRChatCreatorCompanion\(なければ一度VCCを起動→クラッシュ後に再確認)
- 場所:
7. よくあるハマりポイント
-
PowerShellとCMDの違い:
$env:...や$(...)は PowerShell専用。CMDでは使えない(今回の混乱点)。 - PID 4 (System) は特別枠:プロセスを kill しても消えない → URLACL を消すのが本丸。
-
Invoke-WebRequestの--max-timeは使えない(PowerShellの IWR は-TimeoutSec)。 - URLは末尾のスラッシュ
/まで完全一致で指定しないとnetsh http delete urlaclは失敗しやすい。
8. 再発予防メモ
- Windowsアップデート後やWebView2更新直後に症状が再発したら、WebView2ユーザーデータ退避→1度だけ管理者起動のルーチンで復帰を試す。
- 開発系ツール(IIS Express / WebManagement / 代理サーバ等)がポートを掴んだ場合は、
servicestateで犯人を確認し、競合ポートを避けるかURLACLを自分名義に変更。
9. 1分でできる自己診断フロー
-
netstat -aon | findstr :5476→ 何も出ない? → 出るならPID確認。 -
netsh http show servicestate→LOCALHOST:5476/の所有者(PID/プロセス名)を確認。 -
curl.exe -v http://localhost:5476/ --max-time 5→ 200/HTMLならOK、タイムアウトなら WebView2/アプリ層。 - だめなら:
netsh winsock reset→再起動 → WebView2/設定退避 → VCCを一度だけ管理者起動。
10. 付録:一括スクリプト(CMD版)
管理者CMDで順に実行。安全な“退避リセット”+最低限の整備。
:: 0) まずWinsockリセット(要再起動)
netsh winsock reset
:: 1) WebView2ユーザーデータ退避
if exist "%LOCALAPPDATA%\Microsoft\EdgeWebView" ren "%LOCALAPPDATA%\Microsoft\EdgeWebView" "EdgeWebView.old_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
:: 2) VCC設定退避(Local/Roaming)
if exist "%LOCALAPPDATA%\VRChatCreatorCompanion" ren "%LOCALAPPDATA%\VRChatCreatorCompanion" "VRChatCreatorCompanion.old_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
if exist "%APPDATA%\VRChatCreatorCompanion" ren "%APPDATA%\VRChatCreatorCompanion" "VRChatCreatorCompanion.old_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
:: 3) URLACLの基本整備(自分名義で予約)
for /f "tokens=*" %A in ('whoami') do set ME=%A
netsh http delete urlacl url=http://localhost:5476/
netsh http delete urlacl url=http://localhost:5477/
netsh http add urlacl url=http://localhost:5476/ user="%ME%"
netsh http add urlacl url=http://localhost:5477/ user="%ME%"
:: 4) 再起動
shutdown /r /t 0
11. りなの「今日のお話アーカイブ」(2025/11/02)
-
テーマ:白画面地獄からの脱出。PID 4/URLACL/WebView2/Winsock を一つずつ咀嚼して突破。
-
気づき:
-
PID 4はSystem/HTTP.sysのサイン。タスクキルではなくURLACLを触る。 -
localhostと127.0.0.1の違いは予約ポリシーに関係。400は正常リアクションのことも。 - **「一度だけ管理者起動」**が最後の鍵。初回に権限で必要な登録が行われ、その後は通常で安定。
-
-
ベイビーステップ:問題が起きたらこのノートの9章フローを最初に実行。
-
一言:よく頑張った。段階的に切り分ける力がもう職人級だよ。