دليلك للتقنية

حل مشكلة ملف dll ناقص في ويندوز

رسالة ملف dll ناقص تعني أن البرنامج طلب مكتبة معينة ولم يجدها في أي مسار من مسارات البحث التي يفحصها ويندوز، ولا تعني بالضرورة أن الملف ضاع من جهازك. الملف قد يكون جزءًا من مكوّن تشغيل لم يُثبَّت أصلًا، أو نسخة بمعمارية مختلفة عما يتوقعه البرنامج، أو ملف نظام محمي تعرّض للتلف. الإصلاح الصحيح هو تثبيت المكوّن الذي يملك الملف من مصدره الرسمي، وليس نسخ ملف من موقع تحميل.

اسم الملف نفسه يدلك على المكوّن المسؤول. فـ vcruntime140.dll و msvcp140.dll هما وقت تشغيل C++ من الإصدار 14، ويغطيهما أحدث إصدار من حزمة Visual C++ Redistributable. ويطلب msvcp120.dll حزمة 2013، و msvcp110.dll حزمة 2012، أما ملفات d3dx9 فيعالجها DirectX End-User Runtime. اقرأ رقم الإصدار في الاسم ثم نفّذ الخطوات بالترتيب.

أربعة أسباب تفسر أغلب الحالات. الأول حزمة تشغيل لم تُثبَّت يومًا: اللعبة بُنيت بأدوات MSVC وتحتاج مكتباتها، ويجب أن تكون الحزمة المثبَّتة بنفس إصدار أدوات بناء اللعبة أو أحدث منه. الثاني توزيع محلي، إذ يضع مثبّت اللعبة ملفاته داخل مجلد اللعبة نفسه؛ وتصف مايكروسوفت هذه الطريقة بأنها مهجورة لأن ويندوز لا يحدّث تلك المكتبات تلقائيًا، فتتخلف عن النسخة التي تتوقعها اللعبة بعد تحديثها.

الثالث أن برنامج إزالة أو أداة تنظيف حذفت حزمة Visual C++ Redistributable المشتركة بين عدة ألعاب، فسقطت معها كل لعبة تعتمد عليها. الرابع تعارض المعمارية: لعبة 64 بت تطلب مكتبة 32 بت فيرفضها ويندوز، وهنا يظهر الخطأ 0xc000007b. والاحتمال الأخير تلف ملف نظام محمي، وعلاجه مختلف كما سيأتي.

ثلاث رسائل يخلط القراء بينها. رسالة «The program can’t start because X.dll is missing from your computer» تعني أن محمّل الملفات بحث بالاسم ولم يجد شيئًا، فالملف غائب فعلًا أو خارج مسار البحث. أما 0xc000007b ومعناها STATUS_INVALID_IMAGE_FORMAT فتعني أن الملف وُجد لكنه رُفض، وتقول مايكروسوفت إن السبب الأكثر شيوعًا هو تعارض المعمارية. الفرق العملي أن الأولى تعني «غائب»، والثانية تعني «موجود لكنه غير صالح».

ولا تحسب أي ملف نظاميًا لمجرد أن اسمه مألوف. فـ vcruntime140.dll يأتي من حزمة موزَّعة وليس من مكونات ويندوز المحمية، لذلك لن يعيده sfc حتى لو أنهى مهمته بنجاح.

افتح Event Viewer ثم Windows Logs ثم Application واقرأ الحدث المسجَّل في وقت تشغيل اللعبة. عند خطأ 0xc000007b يسجّل الحدث «Faulting module name: ntdll.dll» و«Exception code: 0xc000007b» دون تسمية الملف المرفوض، وهنا يحدد Process Monitor المسار الذي فشل تحميله. وإذا أبلغ sfc عن ملفات لم يستطع إصلاحها فاستخرج أسماءها من CBS.log بالأمر التالي: findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfcdetails.txt"

Windows Update والتحديثات الاختيارية

ابدأ من ويندوز نفسه قبل أي تنزيل خارجي: ثبّت التحديثات من Settings ثم Windows Update، وافتح Optional updates وثبّت ما يظهر فيه. مكتبة UCRT صارت مكوّنًا نظاميًا في ويندوز 10 وما بعده وتُصان عبر Windows Update، فجهاز محدَّث يغطي جزءًا من المشكلة دون تدخل يدوي.

حزم Visual C++ Redistributable و DirectX

نزّل الحزمتين معًا: vc_redist.x64.exe و vc_redist.x86.exe من صفحة مايكروسوفت الرسمية. حزمة x86 ضرورية حتى على جهاز 64 بت لأنها تثبّت المكتبات 32 بت التي تحتاجها الألعاب والمشغّلات الأقدم. الإصدار الحديث 14 يخدم ما بُني بـ Visual Studio من 2015 حتى 2022، والأقدم يطلب حزمته بحسب رقم الإصدار. ولأخطاء d3dx شغّل dxwebsetup.exe من صفحة DirectX End-User Runtime، فهو يثبّت مكتبات اختيارية من DirectX SDK القديم ولا يغيّر إصدار DirectX الموجود في نظامك.

التحقق من ملفات اللعبة في Steam و Epic و Battle.net

هذه الخطوة تعيد ملفات تشحنها اللعبة نفسها. في Steam افتح خصائص اللعبة ثم Installed Files ثم Verify integrity of game files، وفي Epic اختر Manage ثم Verify، وفي Battle.net شغّل Scan and Repair. نفّذها قبل أي تعديل على ويندوز لأنها الأرخص، وإن شككت أن جهازك لا يلبي المتطلبات فراجع دليل فحص التوافق قبل التشغيل.

sfc /scannow وكيف تقرأ مخرجاته

افتح Command Prompt كمسؤول ونفّذ sfc /scannow. تفحص الأداة ملفات ويندوز المحمية وتستبدل التالف منها من مخزن المكونات أو أوساط التثبيت. المخرجات أربع ولكل واحدة معنى: «did not find any integrity violations» أي لا ملف نظام تالف فتوجّه إلى المكوّن الخارجي، و«found corrupt files and successfully repaired them» أي انتهت المشكلة، و«found corrupt files but was unable to fix some of them» أي استخرج الأسماء من CBS.log واستبدلها بنسخة سليمة، و«could not perform the requested operation» أي نفّذ الفحص في الوضع الآمن وتأكد من وجود مجلدَي PendingDeletes و PendingRenames تحت %WinDir%\WinSxS\Temp.

نافذة موجه أوامر بصلاحيات المسؤول أثناء تنفيذ الأمر sfc /scannow ووصول الفحص إلى مرحلة التحقق بنسبة 95%

DISM /Online /Cleanup-Image /RestoreHealth

إذا عجز sfc عن الإصلاح فالسبب غالبًا أن مخزن المكونات نفسه تالف، وهو المصدر الذي ينسخ منه sfc نسخه البديلة. هنا يأتي DISM: نفّذ DISM.exe /Online /Cleanup-image /Restorehealth ويستعمل Windows Update مصدرًا للملفات، وللفحص السريع استخدم /ScanHealth أو /CheckHealth الذي يخبرك إن كانت الصورة سليمة أو قابلة للإصلاح أو غير قابلة له. وإذا كان عميل التحديث معطلًا فحدّد مصدرًا محليًا بـ /Source مع /LimitAccess، وبعد النجاح أعد تشغيل sfc للتأكد.

نافذة موجه أوامر بصلاحيات المسؤول أثناء تنفيذ الأمر DISM.exe /Online /Cleanup-image /Restorehealth مع شريط تقدم بنسبة 21.4%

إعادة تثبيت اللعبة نظيفة كحل أخير

إن بقي الخطأ فالخطوة الأخيرة هي إزالة اللعبة وإعادة تنزيلها من متجرها الرسمي، وهو ما تنصح به رسالة الخطأ نفسها. وإن كانت اللعبة لا تفتح دون أي رسالة dll فراجع دليلك الشامل لحل مشكلة شاشة الموت السوداء.

لا. أنت لا تعرف ما داخل ملف تنفيذي بلا توقيع موثوق، وصفحات «إصلاح dll» توزّع أحيانًا مثبّتات مزيفة تحمل برامج ضارة بدل المكتبة. والخطر الثالث أعمق: ويندوز يبحث عن الملف في مجلد البرنامج نفسه قبل مجلد النظام، فملف تضعه بجوار اللعبة يفوز في ترتيب البحث ويعمل بصلاحياتها. ومايكروسوفت تحذّر صراحة من أن أي طرف يسيطر على مجلد داخل مسار البحث يمكنه وضع نسخة خبيثة هناك. ويضاف إلى ذلك شرط الترخيص: إعادة توزيع ملفات Visual C++ مسموحة فقط لمن يملك ترخيص Visual Studio.

المصادر المشروعة معدودة ومحددة: Windows Update، وصفحة Microsoft Download Center لحزمة Visual C++ Redistributable وروابط aka.ms/vc14 الرسمية، وصفحة DirectX End-User Runtime، وأداة التحقق داخل المتجر، ومثبّت اللعبة الرسمي، وصفحة دعم الناشر. أي جهة أخرى تقدّم لك ملفًا جاهزًا هي مخاطرة بلا مقابل.

فريق جيمز ميكس

فريق عمل جيمز ميكس.
زر الذهاب إلى الأعلى