Vad är DLL-filer och varför saknas en från min dator?

När du får ett felmeddelande om att Windows inte kunde hitta en viss DLL-fil kan det vara väldigt frestande att ladda ner filen från en av de många DLL-platserna där ute. Det är därför du inte borde.

Vad är DLL-filer?

RELATERAD: Vad är rundll32.exe och varför körs det?

Innan vi börjar med varför du inte ska ladda ner Dynamic Link Library (DLL) -filer från Internet, låt oss först titta på vad DLL-filer är. En DLL-fil är ett bibliotek som innehåller en uppsättning kod och data för att utföra en viss aktivitet i Windows. Appar kan sedan anropa dessa DLL-filer när de behöver utföra den aktiviteten. DLL-filer är mycket som körbara (EXE) filer, förutom att DLL-filer inte kan köras direkt i Windows. Med andra ord kan du inte dubbelklicka på en DLL-fil för att köra den på samma sätt som en EXE-fil. Istället är DLL-filer utformade för att användas av andra appar. Faktum är att de är utformade för att användas av flera appar samtidigt. ”Länk” -delen av DLL-namnet antyder också en annan viktig aspekt. Flera DLL-filer kan länkas ihop så att när en DLL anropas,ett antal andra DLL-filer kallas också samtidigt.

Windows själv använder omfattande DLL-filer, som en tur genom C:\Windows\System32mappen kan berätta för dig. Som ett exempel på vad vi pratar om, låt oss överväga Windows-systemfilen “comdlg32.dll.” Den här filen, även känd som Common Dialog Box Library, innehåller kod och data för att bygga många av de vanliga dialogrutorna du ser i Windows - dialogrutor för saker som att öppna filer, skriva ut dokument och så vidare. Instruktionerna i denna DLL hanterar allt från att ta emot och tolka meddelanden som är avsedda för dialogrutan till att specificera hur dialogrutan ser ut på din skärm. Självklart kan flera appar anropa denna DLL samtidigt, annars skulle du inte kunna öppna en dialogruta (som den nedan) i mer än en app åt gången.

Med DLL-filer kan kod moduleras och återanvändas, vilket innebär att utvecklare inte behöver spendera tid på att skriva kod från grunden för att utföra vardagliga eller vanliga funktioner. Och även om utvecklare kommer att skapa sina egna DLL-filer för att installera med sina appar, är de allra flesta DLL-filer som kallas av appar faktiskt buntade med Windows eller med extra paket, som Microsoft .NET Framework eller Microsoft C ++ Redistributables. Den andra stora fördelen med att modulera koden på det här sättet är att uppdateringar är lättare att tillämpa på varje DLL snarare än på en hel app - speciellt när dessa DLL-filer inte kom från utvecklaren av appen. Till exempel när Microsoft uppdaterar vissa DLL-filer i sitt .NET Framework kan alla appar som använder dessa DLL-filer omedelbart dra nytta av den uppdaterade säkerheten eller funktionaliteten.

RELATERAD: Vad är Microsoft .NET Framework och varför är det installerat på min dator?

Nedladdade DLL-filer kan vara föråldrade

Så, med lite förståelse för DLL-filer under våra bälten, varför inte ladda ner dem från Internet när en saknas i ditt system?

Det vanligaste problemet du kommer att stöta på med nedladdade DLL-filer är att de är föråldrade. Många av DLL-sidorna där ute får sina DLL-filer genom att bara ladda upp dem från sina egna eller deras användares datorer. Du kan förmodligen redan se problemet. De flesta av dessa webbplatser vill bara ha din trafik, och när en DLL har laddats upp har de lite incitament att se till att filen hålls uppdaterad. Lägg till detta att leverantörer vanligtvis inte släpper uppdaterade DLL-filer till allmänheten som enskilda filer, och du kan se att även webbplatser som  försöker hålla filer uppdaterade sannolikt inte kommer att bli mycket framgångsrika.

Det finns också det ytterligare problemet att DLL-filer vanligtvis integreras i paket. En uppdatering av en DLL i ett paket åtföljs ofta av uppdateringar till andra relaterade DLL-filer i samma paket, vilket innebär att även i det osannolika fallet att du får en uppdaterad DLL-fil kommer du inte att få relaterade filer som också har har uppdaterats.

Nedladdade DLL-filer kan infekteras

Även om det är mindre vanligt är ett potentiellt mycket värre problem att DLL-filer som du laddar ner från andra källor än leverantören ibland kan laddas med virus eller annan skadlig kod som kan infektera din dator. Detta gäller särskilt på webbplatser som inte är så försiktiga med var de får sina filer. Och det är inte så att dessa webbplatser kommer att gå ut ur deras sätt att berätta om deras riskabla källor. Den riktigt skrämmande delen är att om du laddar ner en infekterad DLL-fil, riskerar du - av själva typen av DLL-filer - att ge den filen djupare åtkomst än vad en vanlig infekterad fil kan få.

RELATERAD: Vad är det bästa antivirusprogrammet för Windows 10? (Är Windows Defender tillräckligt bra?)

Den goda nyheten här är att en bra antivirusapp i realtid vanligtvis kan upptäcka dessa infekterade DLL-filer innan de faktiskt sparas i ditt system och hindra dem från att göra någon skada. Ändå måste du komma ihåg att även ett fantastiskt antivirusprogram kanske inte ger dig perfekt skydd. Om du brukar ladda ner riskabla filer kommer det troligtvis att komma ikapp dig någon gång. Det är bäst att bara undvika dessa DLL-webbplatser.

De kommer förmodligen inte att lösa ditt problem i alla fall

Även om det är möjligt att bara en enda DLL-fil på din dator har skadats eller raderats, är det mer troligt att andra DLL-filer eller relaterade appfiler också är skadade eller saknas. Anledningen till att du får ett fel angående en viss fil är att det är det första felet som en app stött på innan du kraschar och att du helt enkelt inte får besked om resten. Detta kan vara sant oavsett orsaken till problemet.

RELATERADE: Dåliga sektorer förklarade: Varför hårddiskar får dåliga sektorer och vad du kan göra åt det

Varför kan DLL-filer saknas eller skadas? Det kan hända att en annan felaktig app eller uppdatering försökte ersätta filen och misslyckades eller ersatte den med en föråldrad kopia. Det kan vara ett fel i installationen av din huvudapp eller i ett paket som .NET. Det kan till och med vara att du har ett annat problem - som dåliga sektorer på hårddisken - som förhindrar att filen laddas korrekt.

Hur kan jag fixa mitt DLL-fel?

Det enda sättet att se till att du får en stabil, uppdaterad och ren DLL är att få den genom källan från vilken den härstammar. Vanligtvis kommer den källan att vara:

RELATERAD: Hur man söker efter (och fixar) korrupta systemfiler i Windows

  • Ditt installationsmedium för Windows . Det är osannolikt att du helt enkelt kommer att kunna kopiera en DLL-fil från installationsmediet, men du har ett snabbt alternativ att försöka innan du gör något så drastiskt som att återinstallera Windows. Du kan använda Windows Resource Protection-verktyget (ofta kallat systemfilkontrollen eller SFC), som söker efter och korrigerar korrupta eller saknade systemfiler i Windows. Du bör ha ditt installationsmedia till hands när du kör verktyget, bara om det behöver kopieras en fil därifrån. (Om du inte har en installationsskiva kan du ladda ner en här.)
  • Microsoft .NET Framework-paketen . Flera versioner av .NET installeras automatiskt tillsammans med Windows, och många appar installerar också filer från dessa paket också. Du kan läsa vår artikel om .NET-ramverket, som också har några råd för att hitta och reparera tillhörande problem.
  • Olika Microsoft Visual C ++ -fördelningsbara paket . Beroende på vilka appar du använder kan du ha flera versioner av C ++ Redistributable installerad på din dator. Ibland kan det vara svårt att begränsa vilken som är skyldig, men ett bra ställe att börja är vår artikel om C ++ Redistributables, som också har flera felsökningssteg och länkar där du kan ladda ner de senaste versionerna direkt från Microsoft.
  • Appen som DLL kom med . Om DLL installerades tillsammans med en app istället för att vara en del av ett separat paket, är det bästa alternativet bara att installera om appen. I vissa appar kan du utföra en reparation istället för en fullständig ominstallation. Båda alternativen ska fungera, eftersom en reparation vanligtvis letar efter saknade filer i installationsmapparna.

Om allt som misslyckas kan du kontakta appleverantören och begära en kopia av en enskild DLL-fil. Vissa företag är öppna för denna begäran; vissa är det inte. Om du stöter på ett företag som inte kommer att tillhandahålla enskilda filer kan de åtminstone kunna erbjuda andra förslag för att lösa ditt problem.