ホームページ >バックエンド開発 >C++ >プラットフォームやバージョン全体で Windows 10 のバージョンを確実に検出するにはどうすればよいですか?

プラットフォームやバージョン全体で Windows 10 のバージョンを確実に検出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 12:24:02336ブラウズ

How to Reliably Detect Windows 10 Version Across Platforms and Versions?

Windows 10 バージョンのクロスプラットフォームおよびマルチバージョンの検出

コンテキスト

Windows 10 のクロスプラットフォーム互換性の検出は、不正確なため困難な場合がありますIsWindows10OrGreater() などの利用可能な関数で。この記事では、この問題を解決するためのクロスプラットフォームおよびマルチバージョンのアプローチについて説明します。

解決策

実際の OS バージョンを取得する最も信頼できる方法は、RtlGetVersion を呼び出すことです。この関数は、GetVersionEx および VerifyVersionInfo によって使用される互換性シムを回避します。次のコード スニペットに示すように、動的リンクを通じてアクセスできます。

<code class="c++">RTL_OSVERSIONINFOW GetRealOSVersion() {
    HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll");
    if (hMod) {
        RtlGetVersionPtr fxPtr = (RtlGetVersionPtr)::GetProcAddress(hMod, "RtlGetVersion");
        if (fxPtr != nullptr) {
            RTL_OSVERSIONINFOW rovi = { 0 };
            rovi.dwOSVersionInfoSize = sizeof(rovi);
            if ( STATUS_SUCCESS == fxPtr(&amp;rovi) ) {
                return rovi;
            }
        }
    }
    RTL_OSVERSIONINFOW rovi = { 0 };
    return rovi;
}</code>

このメソッドは、マニフェストがない場合でも、Windows 10 で期待される結果を返します。

代替アプローチ

OS のバージョンに依存するのではなく、機能ベースのソリューションを実装することをお勧めします。これにより、より柔軟で将来性のあるアプローチが提供されます。

以上がプラットフォームやバージョン全体で Windows 10 のバージョンを確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。