web-dev-qa-db-ja.com

コンピューターにインストールされているWindows SDKのバージョンを確認するにはどうすればよいですか?

c++を学んだ後、win32およびvb.netプログラミングを自分で教えることにしました。非常に簡単な質問があります。

コンピューターにインストールされているWindows SDKのバージョンを確認するにはどうすればよいですか?

c++をいじり始める前に、まだインストールされていない場合は最新バージョンをインストールできるようにお願いしています。 Microsoft Visual Studio 2008 SP1IDEとして使用しています。

46
Matt

少なくとも英語ロケールでは:

dir "%ProgramFiles%\Microsoft SDKs\Windows"

動作するはずです。複数のバージョンがインストールされている可能性が非常に高く、1つのビルドに適切なバージョンは、そのプロジェクトでのみ指定できます。

41
Richard

Windows SDKの現在のバージョンは、次のレジストリキーのCurrentVersion値に格納されています。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

このPowerShellワンライナーを使用して取得できます。

$(Get-Item "hklm:\SOFTWARE\Microsoft\Microsoft SDKs\Windows").GetValue("CurrentVersion")

enter image description here

29
Day

コンパイル中に、使用されているWindows SDKの主要なOSバージョンを判断する必要がある場合は、ntverp.hで定義されているVER_PRODUCTBUILDマクロを使用できます。例えば:

#include <ntverp.h>
#if VER_PRODUCTBUILD > 9600
// Windows 10+ SDK code goes here
#else
// Windows 8.1- SDK code goes here
#endif

製品は特定のプラットフォームSDKでビルドするように設計する必要があるため、ほとんどの場合、これは必要ありません。ただし、一部の大規模な製品では、複数のプラットフォームSDKをサポートすることが望ましい場合があります。これは、一方から他方へ移行するときに特に役立ちます。ヘッダーファイルにバグがある場合(bthledef.hのWindows 8.1 SDKバージョンの偽の「#pragma pop」など)、このバグを回避する必要があるかもしれませんが、Windows 10 SDKを使用する場合は回避策を含めないでください。以上。この手法は、必要なSDKバージョンがインストールされていない場合に役立つエラーメッセージを提供するためにも使用できます。

VER_PRODUCTBUILDは、8.1と10などの主要なOSバージョン情報のみを提供することに注意してください。つまり、VER_PRODUCTBUILDは、Windows 10の更新で変更されないため、役に立たなくなります。したがって、sdkddkver.hとNTDDI_WIN10_ *マクロ。 Windows 10.0.17763.0 SDK以降、NTDDI_WIN10_RS5が定義されました。したがって、次のようなコードを記述します。

#include <sdkddkver.h>
#if !defined(NTDDI_WIN10_RS5)
    #error Windows 10.0.17763.0 SDK is required
#endif
28
Bruce Dawson

最新バージョンについては、次のregeditキーで確認してください。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits

または以下:

C:\Program Files (x86)\Microsoft SDKs\Windows Kits
4
T.Todua

Visual Studioがインストールされている場合は、Visual Studioソリューションを開く(または自分で作成する)ことができ、ソリューションエクスプローラーでソリューションを右クリックしてRetarget Solution。メニューには、使用可能なWindows SDKバージョンのドロップダウンリストが表示されます。

0
Casey Kuball