ユニバーサル CRT の配置
Visual Studio .NET から Visual Studio 2013 では、各メジャー リリースの C++ コンパイラとツールに、新しいスタンドアロン バージョンの Microsoft C ランタイム (CRT) ライブラリが組み込まれました。 これらのスタンドアロン バージョンの CRT は互いに独立しており、程度の差はありますが、互換性はありませんでした。 たとえば、Visual Studio 2012 で使用される CRT ライブラリはバージョン 11 (名前は msvcr110.dll ) で、Visual Studio 2013 で使用される CRT はバージョン 12 (名前は msvcr120.dll) でした。 これは、Visual Studio 2015 以降には当てはまりません。 Visual Studio 2015 以降のバージョンの Visual Studio ではすべて 1 つのユニバーサル CRT を使用します。
ユニバーサル CRT (UCRT) は、Microsoft Windows オペレーティング システム コンポーネントです。 Windows 10 以降および Windows Server 2016 以降では、オペレーティング システムの一部として組み込まれています。 UCRT は、引き続き延長サポートの対象である以前のオペレーティング・システムで Windows Update を使用して利用できます。 ユニバーサル CRT のローカル配置がいくつかの制限付きでサポートされます。
集中配置
ユニバーサル CRT を集中インストールするための推奨される方法は、Microsoft Windows Update を使用することです。 ユニバーサル CRT は、サポートされるすべての Microsoft Windows オペレーティング システムに対して推奨される更新プログラムです。したがって、既定では、ほとんどのコンピューターで通常の更新プロセスの一環としてインストールされます。 ユニバーサル CRT の初期リリースは KB2999226 でした。 さまざまなバグ修正を含むそれ以降の更新が KB3118401 で行われました。さらにバグ修正と新機能で更新が行われています。 最新の更新プログラムについては、 support.microsoft.com
「ユニバーサル C ランタイム」または「ユニバーサル CRT」を検索してください。
すべての Microsoft Windows コンピューターで Windows Update を使用して定期的に更新プログラムがインストールされるわけではありません。一部のコンピューターでは推奨される更新プログラムがすべてインストールされない場合があります。 そのようなコンピューターで Visual Studio 2015 以降の C++ ツールセットを使ってビルドされたアプリケーションの使用をサポートするために、オフライン配布用のユニバーサル CRT 再頒布可能ファイルを利用できます。 これらの再頒布可能ファイルは、上記の KB リンクのいずれかからダウンロードできます。 ユニバーサル CRT の再頒布可能ファイルを利用するには、コンピューターが現在のサービス パックに更新されている必要があります。 したがって、たとえば、Windows 7 用の再頒布可能パッケージは、Windows 7 RTM ではなく、Windows 7 SP1 にのみインストールされます。
ユニバーサル CRT は、C++ ライブラリの基本的な依存関係です。 Visual C++ 再頒布可能パッケージ (VCRedist) では、バージョンがまだインストールされていないコンピューター上に初期バージョンのユニバーサル CRT (バージョン 10.0.10240) がインストールされます。 このバージョンは、C++ ライブラリの依存関係を満たすのに十分です。 アプリケーションが最新バージョンのユニバーサル CRT に依存している場合は、Windows Update を使用してコンピューターを完全に最新の状態にする必要があります。 または、そのバージョンの UCRT を明示的にインストールします。 VCRedist をインストールする前に、Windows Update または MSU を使用してユニバーサル C ランタイムをインストールすることをお勧めします。 このインストール順序では、何度も再起動しなくて済みます。
すべてのオペレーティング システムが、Windows Update を介した最新のユニバーサル C ランタイムの適用対象であるとは限りません。 Windows 10 または Windows 11 では、集中配置されたバージョンが、オペレーティング・システムのバージョンと一致します。 ユニバーサル C ランタイムをさらに更新するには、オペレーティング システムを更新する必要があります。 Windows Vista から Windows 8.1 までの場合、使用可能な最新のユニバーサル C ランタイムは、Windows 10 Anniversary Update (バージョン 10.0.14393) に基づいています。
ローカル デプロイ
ユニバーサル CRT のローカル配置はサポートされていますが、パフォーマンスとセキュリティの両方の理由から推奨されません。 ローカル配置用の DLL は Windows SDK の一部として、コンピューター アーキテクチャ固有の Windows Kits\10\Redist\ucrt\DLLs
サブディレクトリに含められます。 必要な DLL には、ucrtbase.dll
、および api-ms-win-*.dll
という名前の APISet forwarder DLL のセットがあります。 各オペレーティング システムに必要な DLL のセットは異なります。 ローカル側に配置する場合は、すべての DLL を含めるように強くお勧めします。
ローカル配置の場合は、次の 2 つの制限事項に注意してください。
Windows 10 および Windows 11 では、アプリケーションにユニバーサル CRT のアプリケーションのローカル コピーが含まれている場合でも、システム ディレクトリのユニバーサル CRT が常に使用されます。 これはローカル コピーの方が新しい場合でも当てはまります。ユニバーサル CRT が Windows 10 以降のコア オペレーティング システム コンポーネントであるからです。
Windows 8 より前の Windows バージョンでは、ユニバーサル CRT は、メイン アプリ実行可能ディレクトリ以外の場所に置かれる場合、プラグインを使用してローカル側でパッケージ化できません。 この場合、APISet forwarder DLL で
ucrtbase.dll
を正常に解決することはできません。 推奨される代替ソリューションをいくつか以下に示します。- ユニバーサル CRT を静的にリンクする。
- ユニバーサル CRT を集中配置する。
- アプリと同じディレクトリにユニバーサル CRT ファイルを配置する。
Microsoft Windows XP での配置
Visual Studio 2015 と Visual Studio 2017 のツールセットでは、Microsoft Windows XP で使用されるソフトウェアの開発が引き続きサポートされます。 Microsoft Windows XP 用のバージョンのユニバーサル CRT があります。 Microsoft Windows XP オペレーティング システムは、メインストリーム サポートや延長サポートの対象外となりました。 そのため、Microsoft Windows XP へのユニバーサル CRT の集中配置は、他のオペレーティング システムとは異なります。
Visual C++ 再頒布可能パッケージを Windows XP にインストールすると、システム ディレクトリにユニバーサル CRT とそのすべての依存関係が直接インストールされます。 Windows Update をインストールすることも、Windows Update に依存することもありません。 再頒布可能マージ モジュールの Microsoft_VC<version>_CRT_<target>.msm
ファイルでも同様です。
Windows XP でのユニバーサル CRT のローカル配置は、サポートされている他のオペレーティング システムの場合と同じです。
重要
Windows XP のランタイム ライブラリ サポートは、Visual Studio 2015、2017、2019、2022 の最新の Visual C++ 再頒布可能パッケージでは使用できなくなりました。 Windows XP をサポートする最後の再頒布可能パッケージは、バージョン 16.7 (ファイル バージョン 14.27.29114.0) です。 ご利用の Windows XP アプリが最新バージョンの再頒布可能パッケージを使用して配置されているか、そのバージョンに更新されている場合、アプリは実行されません。 詳細情報、および Windows XP をサポートする再頒布可能パッケージのバージョンを取得する方法については、「Windows XP 用プログラムの構成」を参照してください。