"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية اكتشاف إصدار Windows 10 بشكل موثوق عبر الأنظمة الأساسية والإصدارات؟

كيفية اكتشاف إصدار Windows 10 بشكل موثوق عبر الأنظمة الأساسية والإصدارات؟

تم النشر بتاريخ 2024-11-21
تصفح:856

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

اكتشاف إصدار Windows 10 عبر الأنظمة الأساسية والإصدارات المتعددة

السياق

قد يكون اكتشاف توافق Windows 10 عبر الأنظمة الأساسية أمرًا صعبًا بسبب عدم الدقة في الوظائف المتاحة مثل IsWindows10OrGreater(). تستكشف هذه المقالة أسلوبًا مشتركًا بين الأنظمة الأساسية ومتعدد الإصدارات لحل هذه المشكلة.

الحل

الطريقة الأكثر موثوقية لاسترداد إصدار نظام التشغيل الحقيقي هي استدعاء RtlGetVersion. تتجنب هذه الوظيفة حشوات التوافق التي يستخدمها GetVersionEx وVerifyVersionInfo. يمكن الوصول إليه من خلال الارتباط الديناميكي كما هو موضح في مقتطف التعليمات البرمجية التالي:

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;
}

تقوم هذه الطريقة بإرجاع النتائج المتوقعة على نظام التشغيل Windows 10، حتى في حالة عدم وجود بيان.

نهج بديل

بدلاً من الاعتماد على إصدارات نظام التشغيل، يوصى بـ تنفيذ الحلول القائمة على الميزات. وهذا يوفر نهجًا أكثر مرونة ومقاومًا للمستقبل.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3