在現代軟體開發中,在不同平台和版本中偵測Windows 10 版本,包括Windows 7 以上版本,對於跨平台相容性和存取特定於版本的功能至關重要。但是,在針對 Windows 10 之前的 Windows 版本時,依賴 IsWindows10OrGreater() 等特定於 Windows 的函數會帶來挑戰。
多版本替代方案
克服這些限制,一個健壯的多版本解決方案是必要的。 RtlGetVersion 提供了一種可靠的方法來檢索正版作業系統版本,繞過通常會傳回不準確資訊的相容性填色程式。該函數可以透過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(&rovi) ) { return rovi; } } } RTL_OSVERSIONINFOW rovi = { 0 }; return rovi; }</code>
其他注意事項
為了增強細節,可以使用RTL_OSVERSIONINFOEXW 結構而不是RTL_OSVERSIONINFOW,確保dwOSVersionInfoSize成員的適當設定。無論是否存在清單,此方法都能為 Windows 10 提供精確的結果。
基於功能的方法
除了 Windows 版本檢測之外,還有一種基於功能的方法方法通常被認為是一種更好的選擇。透過針對特定功能而不是作業系統版本,應用程式可以適應更廣泛的系統配置,並確保在不同環境中實現最佳效能。
以上是如何跨平台、跨版本可靠地偵測Windows 10版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!