由於不準確,偵測Windows 10 的跨平台相容性可能具有挑戰性在IsWindows10OrGreater() 等可用函數中。本文探討了一種跨平台和多版本的方法來解決此問題。
檢索真實作業系統版本最可靠的方法是呼叫 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 上傳回預期結果。
建議實作功能為基礎的解決方案,而不是依賴作業系統版本。這提供了一種更靈活且面向未來的方法。
以上是如何跨平台、跨版本可靠地偵測Windows 10版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!