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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-06 04:33:02610ブラウズ

How Can I Reliably Detect Windows 10 Version Across Different Platforms and Versions?

Windows 10 バージョンの検出: クロスプラットフォームおよびバージョン包括的

最新のソフトウェア開発では、Windows 7 以降を含む、さまざまなプラットフォームおよびバージョンにわたって Windows 10 バージョンを検出します。 、クロスプラットフォームの互換性とバージョン固有の機能にアクセスするために重要です。ただし、Windows 10 より前の Windows バージョンを対象とする場合、IsWindows10OrGreater() などの Windows 固有の関数に依存すると課題が生じます。

マルチバージョンの代替手段

これらの制限を克服するには、堅牢なマルチバージョン ソリューションが必要です。 RtlGetVersion は、不正確な情報を返す可能性がある互換性シムをバイパスして、本物の OS バージョンを取得するための信頼できる方法を提供します。この関数には、次に示すように、DDK またはランタイム動的リンクを通じてアクセスできます。

<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>

追加の考慮事項

詳細を強化するには、RTL_OSVERSIONINFOEXW 構造体を利用できます。 RTL_OSVERSIONINFOW の代わりに、 dwOSVersionInfoSize メンバー。このアプローチでは、マニフェストの有無に関係なく、Windows 10 に対して正確な結果が得られます。

機能ベースのアプローチ

Windows バージョンの検出を超えて、機能ベースの多くの場合、このアプローチは優れた代替手段とみなされます。 OS のバージョンではなく特定の機能をターゲットにすることで、アプリケーションは幅広いシステム構成に対応し、さまざまな環境にわたって最適なパフォーマンスを確保できます。

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

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