Mik azok a DLL fájlok, és miért hiányzik az egyik a számítógépemről?

Amikor hibaüzenetet kap, miszerint a Windows nem talál egy adott DLL fájlt, rettenetesen csábító lehet a fájlt letölteni a sok ott lévő DLL webhely egyikéről. Itt van, miért nem szabad.

Mik azok a DLL-ek?

KAPCSOLÓDÓ: Mi az rundll32.exe és miért fut?

Mielőtt belekezdenénk, miért ne töltse le a Dynamic Link Library (DLL) fájlokat az internetről, először nézzük meg, hogy melyek a DLL fájlok. A DLL fájl egy olyan könyvtár, amely kódokat és adatokat tartalmaz egy adott tevékenység végrehajtásához a Windows rendszerben. Az alkalmazások akkor hívhatják meg ezeket a DLL fájlokat, amikor szükségük van az adott tevékenységre. A DLL fájlok nagyon hasonlítanak a futtatható (EXE) fájlokhoz, kivéve, hogy a DLL fájlok nem futtathatók közvetlenül a Windows rendszerben. Más szóval, nem lehet duplán kattintani egy DLL fájlra a futtatáshoz ugyanúgy, mint egy EXE fájlhoz. Ehelyett a DLL fájlokat úgy tervezték, hogy más alkalmazások hívják meg őket. Valójában úgy tervezték őket, hogy egyszerre több alkalmazás hívja meg őket. A DLL név „link” része egy másik fontos szempontot is sugall. Több DLL is összekapcsolható, így amikor egy DLL-t hívnak,számos más DLL is meghívásra kerül egyszerre.

Maga a Windows is széles körben használja a DLL-eket, mivel a C:\Windows\System32mappán keresztüli bemutatás megtudhatja. Példaként tekinthetjük meg a Windows rendszerfájlt „comdlg32.dll”. Ez a fájl, más néven Common Dialog Box Library, kódot és adatokat tartalmaz a Windows rendszerében megjelenő közös párbeszédpanelek sokaságának felépítéséhez - párbeszédablakokhoz, például fájlok megnyitásához, dokumentumok nyomtatásához stb. Az ebben a DLL-ben található utasítások a párbeszédpanelnek szánt üzenetek fogadásától és értelmezésétől kezdve a párbeszédpanel képernyőn való megjelenítésének megadásáig mindent kezelnek. Nyilvánvaló, hogy több alkalmazás egyszerre hívhatja meg ezt a DLL-t, különben egyszerre több alkalmazásban sem tudna párbeszédpanelt (például az alábbit) megnyitni.

A DLL-ek lehetővé teszik a modulok modulálását és újrafelhasználását, ami azt jelenti, hogy a fejlesztőknek nem kell időt tölteniük a semmiből a kódírással, hogy hétköznapi vagy általános funkciókat hajtsanak végre. És bár a fejlesztők saját DLL-eket hoznak létre az alkalmazásokkal való telepítéshez, az alkalmazások által meghívott DLL-ek túlnyomó része tulajdonképpen Windows vagy további csomagok, például a Microsoft .NET-keretrendszer vagy a Microsoft C ++ újraelosztók csomagjában van. A kód ilyen módon történő modulálásának másik nagy előnye, hogy a frissítések könnyebben alkalmazhatók minden egyes DLL-re, nem pedig egy teljes alkalmazásra - különösen, ha ezek a DLL-ek nem az alkalmazás fejlesztőjétől származnak. Például, amikor a Microsoft bizonyos DLL-eket frissít a .NET-keretrendszerében, az ezeket a DLL-eket használó összes alkalmazás azonnal kihasználhatja a frissített biztonság vagy funkció előnyeit.

KAPCSOLÓDÓ: Mi a Microsoft .NET-keretrendszer, és miért van telepítve a számítógépemre?

A letöltött DLL-ek elavultak lehetnek

Tehát, ha egy kicsit megértjük az övünk alatt lévő DLL-eket, miért ne tölthetné le azokat az internetről, ha hiányzik egy a rendszeréből?

A letöltött DLL-ekkel a leggyakoribb probléma az, hogy elavultak. Az ott található DLL-webhelyek közül sok úgy kapja meg a DLL-jét, hogy csak saját - vagy felhasználói - számítógépeiről tölti fel őket. Valószínűleg már látja a problémát. Ezen webhelyek többsége csak a forgalmát akarja, és miután feltöltötte a DLL-t, kevés ösztönzőt biztosítanak a fájl naprakészségének biztosítására. Ehhez hozzá kell tenni, hogy a gyártók általában nem bocsátják ki a frissített DLL-eket a nyilvánosság számára egyedi fájlként, és láthatja, hogy valószínűleg még azok sem a webhelyek sem lesznek túl sikeresek, akik  megpróbálják naprakészen tartani a fájlokat.

Van egy további probléma, hogy a DLL-eket általában csomagokba integrálják. A csomagban lévő egyik DLL frissítését gyakran kísérik az ugyanabban a csomagban lévő más, kapcsolódó DLL frissítések, ami azt jelenti, hogy még abban a valószínűtlen esetben is, ha naprakész DLL fájlt kap, nem kap olyan kapcsolódó fájlokat, amelyek szintén frissítve lett.

A letöltött DLL fájlok megfertőződhetnek

Bár kevésbé gyakori, egy potenciálisan sokkal rosszabb probléma az, hogy a szállítótól eltérő forrásból letöltött DLL-fájlok néha vírusokkal vagy más rosszindulatú programokkal tölthetők fel, amelyek megfertőzhetik a számítógépét. Különösen igaz ez azokra a webhelyekre, amelyek nem túl óvatosak a fájlok megszerzésének kérdésével kapcsolatban. És nem mintha ezek a webhelyek mindent megtesznek azért, hogy kockázatos forrásaikról meséljenek. Az igazán ijesztő rész az, hogy ha fertőzött DLL fájlt tölt le, akkor a DLL fájlok természetéből adódóan azt kockáztatja, hogy a fájlnak mélyebb hozzáférést biztosít, mint egy szokásos fertőzött fájl.

KAPCSOLÓDÓ: Mi a legjobb víruskereső a Windows 10 rendszerhez? (Elég jó a Windows Defender?)

A jó hír az, hogy egy jó, valós idejű víruskereső alkalmazás rendszerint felismeri ezeket a fertőzött DLL fájlokat, mielőtt a rendszerbe mentenék őket, és megakadályozhatja őket abban, hogy bármilyen kárt okozzanak. Ennek ellenére emlékeznie kell arra, hogy egy nagyszerű víruskereső program sem biztos, hogy tökéletes védelmet nyújt Önnek. Ha megszokja, hogy kockázatos fájlokat töltsön le, akkor valószínűleg valamikor utoléri Önt. A legjobb, ha csak elkerüli ezeket a DLL-webhelyeket.

Valószínűleg nem fogják megoldani a problémádat

Bár lehetséges, hogy a számítógépén csak egyetlen DLL fájl sérült vagy törlődött, valószínűbb, hogy más DLL-fájlok vagy a kapcsolódó alkalmazásfájlok is sérültek vagy hiányoznak. Az oka annak, hogy hibát kap egy adott fájlról, az az első hiba, amelyet egy alkalmazás a rendszer összeomlása előtt tapasztalt, és a többiről egyszerűen nem kap értesítést. Ez igaz lehet a probléma okától függetlenül.

KAPCSOLÓDÓ: A rossz szektorok megmagyarázták: Miért kapnak rossz merevlemezeket a merevlemezek és mit tehetsz ez ellen

Miért hiányozhatnak vagy sérülhetnek a DLL-ek? Előfordulhat, hogy egy másik hibás alkalmazás vagy frissítés megpróbálta kicserélni a fájlt, és nem sikerült, vagy elavult másolattal helyettesítette. Hiba lehet a fő alkalmazás telepítésében vagy egy olyan csomagban, mint a .NET. Még az is lehet, hogy van egy másik problémája - például a merevlemezen lévő rossz szektorok -, amelyek megakadályozzák a fájl megfelelő betöltését.

Hogyan javítható a DLL hiba?

A stabil, naprakész és tiszta DLL megszerzésének egyetlen módja az, ha azt a forráson keresztül szerzi be, ahonnan származik. Általában ez a forrás lesz:

KAPCSOLÓDÓ: A sérült rendszerfájlok keresése (és javítása) a Windows rendszerben

  • A Windows telepítési adathordozója . Nem valószínű, hogy képes lesz egyszerűen másolni egy DLL fájlt a telepítő adathordozóról, de van egy gyors lehetősége, hogy megpróbálja kipróbálni, mielőtt valami olyan drasztikus dolgot tenne, mint a Windows újratelepítése. Használhatja a Windows Erőforrás-védelmi eszközt (gyakran rendszerfájl-ellenőrzőnek vagy SFC-nek is nevezik), amely a sérült vagy hiányzó rendszerfájlokat keresi és javítja a Windows rendszerben. Az eszköz futtatásakor a telepítő adathordozónak praktikusnak kell lennie, arra az esetre, ha onnan másolnia kellene egy fájlt. (Ha nincs telepítőlemez, letöltheti innen.)
  • A Microsoft .NET Framework csomagok . A .NET több verziója automatikusan települ a Windows rendszerrel, és sok alkalmazás fájlokat is telepít ezekből a csomagokból. Elolvashatja cikkünket a .NET keretrendszerről, amely néhány tanácsot is tartalmaz a kapcsolódó problémák felkutatásához és kijavításához.
  • Különböző Microsoft Visual C ++ terjeszthető csomagok . A használt alkalmazásoktól függően előfordulhat, hogy a C ++ Redistributable több verziója van telepítve a számítógépre. Néha nehéz lesz szűkíteni, hogy melyik a tettes, de jó kiindulópont a C ++ Redistributables cikkünk, amely számos hibaelhárítási lépést és linket tartalmaz, amelyekre a legfrissebb verziókat közvetlenül a Microsofttól töltheti le.
  • Az az alkalmazás, amellyel a DLL jött . Ha a DLL-et egy alkalmazással együtt telepítették, nem pedig külön csomag részét képezték, akkor a legjobb megoldás az alkalmazás újratelepítése. Egyes alkalmazások lehetővé teszik a javítás elvégzését a teljes újratelepítés helyett. Bármelyik opciónak működnie kell, mivel a javítás általában hiányzó fájlokat keres a telepítési mappákból.

Ha mindez nem sikerül, akkor kapcsolatba léphet az alkalmazás szállítójával és kérheti egy egyedi DLL fájl másolatát. Néhány vállalat nyitott erre a kérésre; egyesek nem. Ha olyan társaságba ütközik, amely nem nyújt egyedi fájlokat, akkor legalább más javaslatokat tudnak felajánlani a probléma megoldására.