UWP のアプリから OS のバージョン情報を取得する

C++/CX の UWP アプリから OS の内部バージョン(ビルド番号含む)を取得するには AnalyticsVersionInfo の DeviceFamilyVersion から下記のようなコードで取得できます。

Windows::System::Profile::AnalyticsVersionInfo^ info = Windows::System::Profile::AnalyticsInfo::VersionInfo;

LPWSTR pEnd = nullptr;
__int64 v = wcstoll(info->DeviceFamilyVersion->Data(), &pEnd, 10);

unsigned long v1 = (v & 0xFFFF000000000000L) >> 48;
unsigned long v2 = (v & 0x0000FFFF00000000L) >> 32;
unsigned long v3 = (v & 0x00000000FFFF0000L) >> 16;
unsigned long v4 = v & 0x000000000000FFFFL;

WCHAR szVersion[1024];
swprintf_s(szVersion, L"%lu.%lu.%lu.%lu\r\n", v1, v2, v3, v4);
OutputDebugStringW(szVersion);

Windows 10 のバージョン (1709や1607など) を判別するには下記のようなコードになります。

unsigned long Windows10Version = 0;

if (Windows::Foundation::Metadata::ApiInformation::IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
	Windows10Version = 1709;
}
else if (Windows::Foundation::Metadata::ApiInformation::IsApiContractPresent("Windows.Foundation.UniversalApiContract", 4))
{
	Windows10Version = 1703;
}
else if (Windows::Foundation::Metadata::ApiInformation::IsApiContractPresent("Windows.Foundation.UniversalApiContract", 3))
{
	Windows10Version = 1607;
}
else if (Windows::Foundation::Metadata::ApiInformation::IsApiContractPresent("Windows.Foundation.UniversalApiContract", 2))
{
	Windows10Version = 1511;
}
else if (Windows::Foundation::Metadata::ApiInformation::IsApiContractPresent("Windows.Foundation.UniversalApiContract", 1))
{
	Windows10Version = 1507;
}

if (Windows10Version > 0)
{
	WCHAR szWindows10Version[1024];
	swprintf_s(szWindows10Version, L"Windows 10 Version = %lu\r\n", Windows10Version);
	OutputDebugStringW(szWindows10Version);
}
else
{
	OutputDebugStringW(L"Windows 10 Version = Unknown\r\n");
}

判別ではなく直接的に Windows 10 のバージョンを取得する方法は分かりませんでした。
UWP ではなくデスクトップアプリの場合は、レジストリから取得が可能です。
→ 参考記事 Windows のバージョンを取得を取得する


スポンサーリンク
広告1
広告1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告1