Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengesan Versi Windows 10 Merentasi Platform dan Versi dengan Amanah?

Bagaimana untuk Mengesan Versi Windows 10 Merentasi Platform dan Versi dengan Amanah?

Mary-Kate Olsen
Lepaskan: 2024-11-05 12:24:02
asal
335 orang telah melayarinya

How to Reliably Detect Windows 10 Version Across Platforms and Versions?

Mengesan Windows 10 Versi Cross-Platform dan Multi-Versi

Konteks

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.

Penyelesaian

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(&amp;rovi) ) {
                return rovi;
            }
        }
    }
    RTL_OSVERSIONINFOW rovi = { 0 };
    return rovi;
}</code>
Salin selepas log masuk

Kaedah ini mengembalikan hasil yang diharapkan pada Windows 10, walaupun tanpa manifes.

Pendekatan Alternatif

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan