『Escape from Tarkov』とHyper-V

最近やり始めた『Escape from Tarkov』で、チート対策のプログラムにHyper-Vが誤検知されるという問題が起きたので、自分の行った対策を書いておく。

前提として、自分はWSL2とDocker Desktop for Windowsを利用している。このWindows PCでEsacpe from Tarkovを実行し、レイドに入って8分程度経過すると、Hyper-Vが云々というメッセージが表示され、退出させられる。Docker Desktop for Windowsを終了させて再試行しても、同様に退出させられる。

「escape from tarkov hyper-v」で検索すると、同様の問題が公式フォーラムやRedditで報告されていることが分かる。

最終的には、Redditで紹介されている方法で解決できた。

次のようにPowershellでコマンドを実行すると、表示名にHyper-VまたはDockerを含むサービスを一覧できる。

PS C:\Windows\system32> Get-Service | where { $_.DisplayName -like "Hyper-V*" -or $_.DisplayName -like "Docker*" }

Status   Name               DisplayName
------   ----               -----------
Stopped  com.docker.service Docker Desktop Service
Running  vmcompute          Hyper-V ホスト コンピューティング ...
Stopped  vmicguestinterface Hyper-V Guest Service Interface
Stopped  vmicheartbeat      Hyper-V Heartbeat Service
Stopped  vmickvpexchange    Hyper-V Data Exchange Service
Stopped  vmicrdv            Hyper-V リモート デスクトップ仮想化...
Stopped  vmicshutdown       Hyper-V Guest Shutdown Service
Stopped  vmictimesync       Hyper-V Time Synchronization Service
Stopped  vmicvmsession      Hyper-V PowerShell Direct Service
Stopped  vmicvss            Hyper-V ボリューム シャドウ コピー ...

Docker Desktop for Windowsを終了させた状態では、上のような状態になっている。具体的には、vmcomputeがRunningになっていることが分かる。

管理者権限で起動したPowershellで次のようにコマンドを実行すると、これらの全てのサービスを一括して停止できる。

PS C:\Windows\system32> Get-Service | where { $_.DisplayName -like "Hyper-V*" -or $_.DisplayName -like "Docker*" } | % { Stop-Service $_ }

結果的に、Escape from Tarkovの起動前に毎度これを実行することにした。また、WSL2で実行しているUbuntuに繋いだターミナルを起動したままの状態で放置していると、停止させたはずのvmcomputeが再度Runningに戻っているという事象が確認できたので、あわせてこれも終了させることにしている。


2023年8月20日時点での対応状況を確認してみたところ、自分の環境ではHyper-Vを有効化していてもチート対策プログラムに検知されなくなっていた。