🪟

Visual Studio 2022のC++開発機能インストール時、Cドライブ直下にDLLが生成されてしまう問題の対応

に公開

Visual Studio 2022の「C++によるデスクトップ開発」機能インストール時、Cドライブ直下にappverifUI.dllvfcompat.dllという二つのdllが生成されてしまう問題が確認されています。これは、Windows 11 SDKに含まれるアプリケーション検証ツールのDLLなのですが、インストーラーの不具合で本来想定されていない場所にDLLが展開されてしまっているのが原因のようです。
パス等は正常に通っているので動作上は問題ないのですが、Cドライブ直下に意図せぬDLLが配置されているのはあまり嬉しい状態ではありません。

https://stackoverflow.com/questions/75270760/can-i-move-or-delete-appverifui-dll-and-vfcompat-dll-from-root-after-visual-stu
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