Mengesan Windows 10 untuk keserasian merentas platform boleh menjadi mencabar kerana ketidaktepatan dalam fungsi yang tersedia seperti IsWindows10OrGreater(). Artikel ini meneroka pendekatan merentas platform dan berbilang versi untuk menyelesaikan masalah ini.
Kaedah yang paling boleh dipercayai untuk mendapatkan semula versi OS sebenar ialah dengan memanggil RtlGetVersion. Fungsi ini mengelakkan shim keserasian yang digunakan oleh GetVersionEx dan VerifyVersionInfo. Ia boleh diakses melalui pautan dinamik seperti yang ditunjukkan dalam coretan kod berikut:
<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>
Kaedah ini mengembalikan hasil yang diharapkan pada Windows 10, walaupun tanpa manifes.
Daripada bergantung pada versi OS, adalah disyorkan untuk melaksanakan penyelesaian berasaskan ciri. Ini menyediakan pendekatan yang lebih fleksibel dan kalis masa hadapan.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Versi Windows 10 Merentasi Platform dan Versi dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!