Objektif:
Tentukan versi khusus Windows 10 yang digunakan secara silang -pangkalan kod platform yang menyasarkan Windows 7 dan lebih baru.
Cabaran:
Windows menyediakan fungsi IsWindows10OrGreater(), tetapi ia tidak tersedia dalam versi Windows yang lebih lama dan mungkin tidak melaporkan versi OS utama dengan tepat.
Penyelesaian:
Gunakan fungsi RtlGetVersion dalam pendekatan serasi silang versi:
<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(&rovi) ) { return rovi; } ... (Error handling code) ... }</code>
Fungsi ini mendapatkan semula versi OS sebenar pada Windows 10 dengan tepat, walaupun tanpa manifes.
Pendekatan Alternatif:
Untuk keserasian yang lebih baik dan kalis masa hadapan, pertimbangkan untuk menentukan ciri keperluan dan bukannya versi OS tertentu. Ini memastikan bahawa kod anda berkelakuan secara konsisten merentas versi Windows yang berbeza dengan keupayaan yang berbeza-beza.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Versi Windows 10 Tertentu Merentasi Pelbagai Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!