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(&rovi) ) { return rovi; } } } RTL_OSVERSIONINFOW rovi = { 0 }; return rovi; }</code>
このメソッドは、マニフェストがない場合でも、Windows 10 で期待される結果を返します。
OS のバージョンに依存するのではなく、機能ベースのソリューションを実装することをお勧めします。これにより、より柔軟で将来性のあるアプローチが提供されます。
以上がプラットフォームやバージョン全体で Windows 10 のバージョンを確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。