ホームページ >バックエンド開発 >C++ >複数のプラットフォームにわたって特定の Windows 10 バージョンを検出するにはどうすればよいですか?

複数のプラットフォームにわたって特定の Windows 10 バージョンを検出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-05 10:17:02996ブラウズ

How Can I Detect the Specific Windows 10 Version Across Multiple Platforms?

プラットフォーム全体で Windows 10 のバージョンを検出する

目的:

クロスで使用されている Windows 10 の特定のバージョンを確認する- Windows 7 以降を対象とするプラットフォーム コードベース。

課題:

Windows は IsWindows10OrGreater() 関数を提供しますが、古いバージョンの Windows では利用できないため、提供できない可能性があります。 OS のメジャー バージョンを正確に報告します。

解決策:

バージョン間互換性のあるアプローチで RtlGetVersion 関数を利用します:

<code class="c++">typedef LONG NTSTATUS, *PNTSTATUS;
#define STATUS_SUCCESS (0x00000000)

typedef NTSTATUS (WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);

RTL_OSVERSIONINFOW GetRealOSVersion() {
    HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll");
    ... (Module handle and function lookup code) ...
        RTL_OSVERSIONINFOW rovi = { 0 };
        rovi.dwOSVersionInfoSize = sizeof(rovi);
        if ( STATUS_SUCCESS == fxPtr(&amp;rovi) ) {
            return rovi;
        }
    ... (Error handling code) ...
}</code>

この関数マニフェストがない場合でも、Windows 10 上の実際の OS バージョンを正確に取得します。

代替アプローチ:

互換性の向上と将来性を確保するには、機能を指定することを検討してください。特定の OS バージョンではなく要件です。これにより、さまざまな機能を持つさまざまな Windows バージョン間でコードが一貫して動作することが保証されます。

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

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