Wat zijn DLL-bestanden en waarom ontbreekt er één vanaf mijn pc?
Wanneer u een foutmelding krijgt dat Windows een bepaald DLL-bestand niet kan vinden, kan het erg verleidelijk zijn om het bestand te downloaden van een van de vele DLL-sites die er zijn. Dit is waarom je dat niet zou moeten doen.
Wat zijn DLL's?
Voordat we aan de slag gaan waarom je geen DLL-bestanden (Dynamic Link Library) van internet moet downloaden, laten we eerst kijken welke DLL-bestanden er zijn. Een DLL-bestand is een bibliotheek die een set code en gegevens bevat voor het uitvoeren van een bepaalde activiteit in Windows. Apps kunnen vervolgens op die DLL-bestanden een beroep doen als ze die activiteit nodig hebben. DLL-bestanden lijken veel op uitvoerbare (EXE) bestanden, behalve dat DLL-bestanden niet rechtstreeks in Windows kunnen worden uitgevoerd. Met andere woorden, u kunt niet dubbelklikken op een DLL-bestand om het op dezelfde manier uit te voeren als een EXE-bestand. In plaats daarvan zijn DLL-bestanden ontworpen om door andere apps te worden gebruikt. Ze zijn zelfs ontworpen om door meerdere apps tegelijkertijd te worden gebruikt. Het "link" deel van de DLL-naam suggereert ook een ander belangrijk aspect. Meerdere DLL's kunnen aan elkaar worden gekoppeld, zodat wanneer een DLL wordt aangeroepen, een aantal andere DLL's tegelijkertijd worden aangeroepen.
Windows zelf maakt veel gebruik van DLL's, als een rondleiding door de C: \ Windows \ System32
map kan je vertellen. Laten we als voorbeeld van waar we het over hebben, het Windows-systeembestand "comdlg32.dll." Bekijken. Dit bestand, ook wel de Common Dialog Box Library genoemd, bevat code en gegevens voor het bouwen van veel van de gemeenschappelijke dialoogvensters die u ziet in Windows-dialogen voor zaken als het openen van bestanden, het afdrukken van documenten, enzovoort. De instructies in dit DLL-bestand verwerken alles, van het ontvangen en interpreteren van berichten die voor het dialoogvenster zijn bedoeld, tot het opgeven van de weergave van het dialoogvenster op uw scherm. Vanzelfsprekend kunnen meerdere apps tegelijkertijd op dit DLL-bestand callen, anders zou u niet in staat zijn om een dialoogvenster (zoals hieronder) in meer dan één app tegelijk te openen.
DLL's zorgen ervoor dat code kan worden gemoduleerd en opnieuw kan worden gebruikt, wat betekent dat ontwikkelaars geen tijd hoeven te besteden aan het schrijven van code om alledaagse of algemene functies uit te voeren. En hoewel ontwikkelaars hun eigen DLL's zullen maken om met hun apps te installeren, zijn de overgrote meerderheid van DLL's die door apps worden gebeld, eigenlijk gebundeld met Windows of met extra pakketten, zoals Microsoft .NET Framework of Microsoft C ++ Redistributables. Het andere grote voordeel van modularizing code op deze manier is dat updates eenvoudiger toe te passen zijn op elke DLL dan op een hele app - vooral als die DLL's niet afkomstig zijn van de ontwikkelaar van de app. Wanneer Microsoft bijvoorbeeld bepaalde DLL's in zijn .NET Framework update, kunnen alle apps die deze DLL's gebruiken onmiddellijk profiteren van de bijgewerkte beveiliging of functionaliteit.
Gedownloade DLL's kunnen verouderd zijn
Dus, met een beetje begrip van DLL's onder onze gordel, waarom download je ze dan niet van het internet als er een ontbreekt in je systeem?
Het meest voorkomende probleem dat je tegenkomt met gedownloade DLL's is dat ze verouderd zijn. Veel van de DLL-sites die er zijn, halen hun DLL's door ze gewoon van hun eigen computer of van die van hun gebruikers te uploaden. Je kunt het probleem waarschijnlijk al zien. De meeste van deze sites willen alleen verkeer, en zodra een DLL is geüpload, hebben ze weinig reden om het bestand up-to-date te houden. Voeg hier aan toe dat leveranciers meestal niet bijgewerkte DLL's openbaar maken als individuele bestanden, en je kunt zien dat zelfs sites die proberen bestanden up-to-date houden, zijn waarschijnlijk niet erg succesvol.
Er is ook het verdere probleem dat DLL's meestal in pakketten worden geïntegreerd. Een update van een DLL in een pakket gaat vaak gepaard met updates van andere, gerelateerde DLL's in hetzelfde pakket, wat betekent dat zelfs in het onwaarschijnlijke geval dat u wel een up-to-date DLL-bestand krijgt, u geen gerelateerde bestanden zult krijgen die ook zijn bijgewerkt.
Gedownloade DLL's kunnen worden geïnfecteerd
Hoewel het minder vaak voorkomt, is een potentieel veel slechter probleem dat DLL's die u downloadt van andere bronnen dan de leverancier soms kunnen worden geladen met virussen of andere malware die uw pc kan infecteren. Dit geldt met name op sites die niet al te voorzichtig zijn met waar ze hun bestanden vandaan halen. En het is niet zo dat die sites hun uiterste best zullen doen om u over hun risicovolle bronnen te vertellen. Het meest enge deel is dat als je een geïnfecteerd DLL-bestand downloadt, je door de aard van DLL-bestanden het risico loopt dat bestand dieper toegankelijk te maken dan een normaal geïnfecteerd bestand kan krijgen.
Het goede nieuws hier is dat een goede, real-time antivirus-app deze geïnfecteerde DLL-bestanden meestal kan detecteren voordat ze daadwerkelijk worden opgeslagen op uw systeem en voorkomen dat ze schade aanrichten. Toch moet je onthouden dat zelfs een geweldig antivirusprogramma je misschien niet de perfecte bescherming biedt. Als je er een gewoonte van maakt om risicovolle bestanden te downloaden, zal deze je waarschijnlijk op een gegeven moment inhalen. Het is het beste om deze DLL-sites gewoon te vermijden.
Ze zullen je probleem hoe dan ook waarschijnlijk niet oplossen
Hoewel het mogelijk is dat slechts één DLL-bestand op uw pc beschadigd is geraakt of is verwijderd, is de kans groter dat andere DLL's of verwante app-bestanden ook corrupt zijn of ontbreken. De reden dat u een foutmelding krijgt over een bepaald bestand, is dat het de eerste fout is die een app tegenkwam voordat deze crashte en u gewoon niet op de hoogte wordt gebracht van de rest. Dit kan waar zijn, ongeacht de oorzaak van het probleem.
Waarom worden DLL's vermist of beschadigd? Het kan zijn dat een andere foutieve app of update probeerde het bestand te vervangen en mislukte, of te vervangen door een verouderde kopie. Het kan een fout zijn bij de installatie van uw hoofdapp of in een pakket zoals .NET. Het kan zelfs zo zijn dat u nog een probleem hebt - zoals slechte sectoren op uw harde schijf - die voorkomen dat het bestand correct wordt geladen.
Hoe los ik mijn DLL-fout op??
De enige manier om ervoor te zorgen dat u een stabiel, up-to-date en schoon DLL-bestand krijgt, is om het door de bron te halen waaruit het is ontstaan. Typisch zal die bron zijn:
- Uw installatiemedia van Windows. Het is onwaarschijnlijk dat je gewoon een DLL-bestand van je installatiemedia kunt kopiëren, maar je hebt wel een snelle optie om het uit te proberen voordat je iets doet dat zo ingrijpend is als Windows opnieuw opstarten. U kunt de Windows Resource Protection-tool gebruiken (vaak de systeembestandscontrole of SFC genoemd), die corrupte of ontbrekende systeembestanden in Windows zal scannen en repareren. U moet uw installatiemedia bij de hand hebben als u de tool gebruikt, voor het geval het een bestand vanaf daar moet kopiëren. (Als u geen installatieschijf hebt, kunt u er hier een downloaden.)
- De Microsoft .NET Framework-pakketten. Verschillende versies van .NET worden automatisch geïnstalleerd samen met Windows, en veel apps installeren ook ook bestanden van die pakketten. U kunt ons artikel over het .NET-framework lezen, dat ook advies heeft voor het vinden en repareren van gerelateerde problemen.
- Verschillende herdistribueerbare pakketten van Microsoft Visual C ++. Afhankelijk van de apps die u gebruikt, zijn mogelijk meerdere versies van de C ++ Redistributable op uw pc geïnstalleerd. Het kan soms moeilijk zijn om te bepalen welke de boosdoener is, maar een goede plaats om te beginnen is ons artikel over C ++ Redistributables, dat ook beschikt over verschillende stappen voor het oplossen van problemen en links waar je de meest recente versies rechtstreeks van Microsoft kunt downloaden.
- De app waarmee het DLL-bestand werd geleverd. Als de DLL samen met een app is geïnstalleerd in plaats van deel uit te maken van een afzonderlijk pakket, is uw beste weddenschap slechts om de app opnieuw te installeren. Met sommige apps kunt u een reparatie uitvoeren in plaats van een volledige herinstallatie. Beide opties zouden moeten werken, omdat een reparatie meestal op zoek is naar ontbrekende bestanden in de installatiemappen.
Als dat allemaal niet lukt, kunt u mogelijk contact opnemen met de leverancier van de app en een kopie van een individueel DLL-bestand aanvragen. Sommige bedrijven staan open voor dit verzoek; sommige zijn dat niet. Als u een bedrijf tegenkomt dat geen individuele bestanden levert, kunnen ze op zijn minst andere suggesties doen om uw probleem op te lossen.