قد يكون اكتشاف توافق 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