Visual Studio 2022のC++開発機能インストール時、Cドライブ直下にDLLが生成されてしまう問題の対応
Visual Studio 2022の「C++によるデスクトップ開発」機能インストール時、Cドライブ直下にappverifUI.dll
とvfcompat.dll
という二つのdllが生成されてしまう問題が確認されています。これは、Windows 11 SDKに含まれるアプリケーション検証ツールのDLLなのですが、インストーラーの不具合で本来想定されていない場所にDLLが展開されてしまっているのが原因のようです。
パス等は正常に通っているので動作上は問題ないのですが、Cドライブ直下に意図せぬDLLが配置されているのはあまり嬉しい状態ではありません。
Stack Overflowではレジストリの値を書き換える対処法が投稿されていますが、SDKのバージョン変更やアンインストール時に変な影響が出るのも面倒なので、問題が発生していないWindows 11 SDKのバージョンにロールバックすることで問題の解消を試みました。
実行環境
- Windows 11 Pro (23H2)
- Visual Studio Community 2022 (
17.12.0→ 17.14.11)
手順
-
Visual Studio Installer
を起動し、変更
ボタンを押下
-
デフォルトでインストールされているWindows 11 SDKからチェックを外し、
古いバージョンのSDKにチェックを入れなおして変更
ボタンを押下
(2025/08/06更新)
筆者の環境では、初期設定で 10.0.22621.0
がインストールされていましたが、 10.0.22000.0
へ変更したところ、Cドライブ直下から該当のDLLが消滅しました。
Visual Studio Community 2022でインストールできるWindows 11 SDKのバージョンが変更され、 10.0.22000.0
が利用できなくなりました。
(2025/09/02更新)
最新の 10.0.26100.4188
でも依然として本現象が再現するため、バージョンダウンで解決するには、Windows 11 SDKではなくWindows 10 SDK 10.0.19041.0
まで戻す必要があります。
最新の 10.0.26100.4654
でも依然として本現象が再現してしまいますが、Windows 10のサポート期限が2025年10月14日に終了してしまうため、以前記載していたWindows 10 SDKまでロールバックする方法は好ましくありません。
そこで、代わりにWindows PowerShellを使って、WingetからWindows 11 SDK 10.0.22000
をインストールします。
-
Windows PowerShell
を起動し、winget
コマンドを実行Windows PowerShell$ winget install --id=Microsoft.WindowsSDK.10.0.22000 -e
上記コマンド実行で、22000以下のパッチバージョン最新である
10.0.22000.832
がインストールされます。
以上になります。
WinGet経由でのインストールで正常動作するか、念のためUnityでIL2CPPビルドを試してみましたが、正常にビルドできていたので大丈夫そうです。
なお、自分の場合、Windows 11 SDKはUnityのIL2CPPビルドで使用する目的だったため 10.0.19041.0
以降のバージョンであれば問題がなく、今回はバージョンのロールバックで対応できましたが、最新のSDKがどうしても必要な場合は上記Stack Overflowの投稿の手順に従い、レジストリの値の書き換えで対応するか、諦めてそのまま使うしかなさそうです。
Discussion