Što su DLL datoteke i zašto jedna nedostaje s mog računala?

Kad dobijete pogrešku koja kaže da Windows nije mogao pronaći određenu DLL datoteku, može biti strašno primamljivo preuzeti datoteku s jednog od mnogih tamošnjih DLL mjesta. Evo zašto ne biste trebali.

Što su DLL-ovi?

POVEZANO: Što je rundll32.exe i zašto se pokreće?

Prije nego što započnemo zašto ne biste trebali preuzeti datoteke s biblioteke dinamičke veze (DLL) s Interneta, pogledajmo prvo što su DLL datoteke. DLL datoteka je knjižnica koja sadrži skup koda i podataka za obavljanje određene aktivnosti u sustavu Windows. Aplikacije tada mogu pozvati te DLL datoteke kada im je potrebna ta aktivnost. DLL datoteke su slične izvršnim datotekama (EXE), osim što se DLL datoteke ne mogu izravno izvršiti u sustavu Windows. Drugim riječima, ne možete dvostruko kliknuti DLL datoteku da biste je pokrenuli na isti način kao i EXE datoteku. Umjesto toga, DLL datoteke dizajnirane su da ih druge aplikacije pozivaju. Zapravo su dizajnirani da ih istovremeno poziva više aplikacija. Dio "veze" naziva DLL također sugerira još jedan važan aspekt. Više DLL-ova može se povezati zajedno, tako da kad se pozove jedan DLL,istovremeno se poziva i niz drugih DLL-ova.

Windows sam široko koristi DLL C:\Windows\System32datoteke , kao što vam može reći obilazak mape. Kao primjer onoga o čemu govorimo, uzmimo u obzir sistemsku datoteku sustava Windows „comdlg32.dll“. Ova datoteka, inače poznata kao Biblioteka zajedničkog dijaloškog okvira, sadrži kod i podatke za izgradnju mnogih uobičajenih dijaloških okvira koje vidite u sustavu Windows - dijaloške okvire za stvari poput otvaranja datoteka, ispisa dokumenata itd. Upute u ovom DLL-u obrađuju sve, od primanja i tumačenja poruka namijenjenih dijaloškom okviru do određivanja kako dijaloški okvir izgleda na vašem zaslonu. Očito je da više aplikacija istovremeno može pozivati ​​ovaj DLL, inače u isto vrijeme ne biste mogli otvoriti dijaloški okvir (poput onog u nastavku) u više aplikacija.

DLL-ovi omogućuju modularizaciju i ponovnu upotrebu koda, što znači da programeri ne moraju trošiti vrijeme na pisanje koda ispočetka kako bi izvršili svakodnevne ili uobičajene funkcije. Iako će programeri stvoriti vlastite DLL-ove za instaliranje sa svojim aplikacijama, velika većina DLL-ova koje aplikacije pozivaju zapravo su u paketu sa sustavom Windows ili s dodatnim paketima, poput Microsoft .NET Framework ili Microsoft C ++ Redistributables. Druga velika prednost modulariziranja koda na ovaj način je ta što se ažuriranja lakše primjenjuju na svaki DLL, a ne na cijelu aplikaciju - pogotovo kad ti DLL-ovi nisu od programera aplikacije. Na primjer, kada Microsoft ažurira određene DLL-ove u svom .NET Framework-u, sve aplikacije koje koriste te DLL-ove mogu odmah iskoristiti ažuriranu sigurnost ili funkcionalnost.

POVEZANO: Što je Microsoft .NET Framework i zašto je instaliran na mom računalu?

Preuzeti DLL-ovi mogu biti zastarjeli

Dakle, uz malo razumijevanja DLL-ova ispod naših pojaseva, zašto ih ne biste preuzeli s Interneta kad jedan nedostaje vašem sustavu?

Najčešći problem s kojim ćete naletjeti pri preuzetim DLL-ovima je taj što su zastarjeli. Mnoga web mjesta DLL-a dobivaju svoje DLL datoteke samo učitavanjem sa svog računala ili računala svojih korisnika. Vjerojatno već vidite problem. Većina ovih web-lokacija samo želi vaš promet, a nakon učitavanja DLL-a nemaju puno poticaja da osiguraju ažuriranje datoteke. Tome dodamo da dobavljači obično ne objavljuju ažurirane DLL-ove za javnost kao pojedinačne datoteke i možete vidjeti da čak i web-lokacije koje  pokušavaju redovito ažurirati datoteke vjerojatno neće biti vrlo uspješne.

Tu je i daljnji problem što su DLL-ovi obično integrirani u pakete. Ažuriranje jednog DLL-a u paketu često prati ažuriranje drugih povezanih DLL-ova u istom paketu, što znači da čak i u malo vjerojatnom slučaju ako dobijete ažurnu DLL datoteku, nećete dobiti povezane datoteke koje također imaju je ažuriran.

Preuzeti DLL-ovi mogu se zaraziti

Iako rjeđi, potencijalno mnogo gori problem je što DLL-ovi koje preuzmete iz izvora koji nisu dobavljači ponekad mogu biti opterećeni virusima ili drugim zlonamjernim softverom koji može zaraziti vaše računalo. To se posebno odnosi na web mjesta koja ne paze previše odakle dobivaju svoje datoteke. I nije baš da će se te web stranice potruditi da vam kažu o svojim rizičnim izvorima. Stvarno je zastrašujući dio da ako preuzmete zaraženu DLL datoteku riskirate - po samoj prirodi DLL datoteka - toj datoteci pružiti dublji pristup nego što bi to mogla dobiti uobičajena zaražena datoteka.

POVEZANO: Koji je najbolji antivirus za Windows 10? (Je li Windows Defender dovoljno dobar?)

Dobra vijest ovdje je da dobra antivirusna aplikacija u stvarnom vremenu obično može otkriti zaražene DLL datoteke prije nego što se stvarno spreme u vaš sustav i spriječiti ih da naprave štetu. Ipak, morate imati na umu da vam čak i sjajan antivirusni program možda neće pružiti savršenu zaštitu. Ako imate naviku preuzimati rizične datoteke, vjerojatno će vas kad-tad stići. Najbolje je samo izbjegavati ova DLL mjesta.

Vjerojatno ionako neće riješiti vaš problem

Iako je moguće da je samo jedna DLL datoteka na vašem računalu oštećena ili izbrisana, vjerojatnije je da su i druge DLL datoteke ili povezane datoteke aplikacija također oštećene ili nedostaju. Razlog zbog kojeg dobivate pogrešku u vezi s jednom određenom datotekom je taj što je to prva pogreška koju je aplikacija naišla prije pada, a o ostalom jednostavno niste obaviješteni. To može biti točno bez obzira na uzrok problema.

POVEZANO: Objašnjeni loši sektori: Zašto tvrdi diskovi dobivaju loše sektore i što možete učiniti s tim

Zašto DLL-ovi mogu nestati ili su oštećeni? Možda je druga pogrešna aplikacija ili ažuriranje pokušala zamijeniti datoteku i nije uspjela ili ju je zamijenila zastarjelom kopijom. Možda je greška u instalaciji vaše glavne aplikacije ili u paketu poput .NET. Možda čak imate i još jedan problem - poput loših sektora na tvrdom disku - koji sprečavaju pravilno učitavanje datoteke.

Kako mogu ispraviti DLL pogrešku?

Jedini način da osigurate da dobijete stabilnu, ažurnu i čistu DLL datoteku je prenijeti je iz izvora iz kojeg potječe. Tipično će taj izvor biti:

POVEZANO: Kako potražiti (i ispraviti) oštećene sistemske datoteke u sustavu Windows

  • Vaš instalacijski medij za Windows . Malo je vjerojatno da ćete moći jednostavno kopirati DLL datoteku s instalacijskog medija, ali imate brzu opciju koju možete isprobati prije nego što napravite nešto tako drastično poput ponovne instalacije sustava Windows. Možete upotrijebiti alat za zaštitu resursa sustava Windows (često se naziva i alat za provjeru sistemskih datoteka ili SFC) koji će skenirati i popraviti oštećene ili nedostajuće sistemske datoteke u sustavu Windows. Instalacijski medij trebao bi vam biti pri ruci prilikom pokretanja alata, samo u slučaju da odatle treba kopirati datoteku. (Ako nemate instalacijski disk, možete ga preuzeti ovdje.)
  • Paketi Microsoft .NET Framework . Nekoliko verzija .NET-a automatski se instalira zajedno sa sustavom Windows, a mnoge aplikacije također instaliraju datoteke iz tih paketa. Možete pročitati naš članak o .NET framework-u, koji također sadrži nekoliko savjeta za pronalaženje i popravljanje povezanih problema.
  • Razni paketi za distribuciju Microsoft Visual C ++ . Ovisno o aplikacijama koje upotrebljavate, na računalu možete instalirati više verzija C ++ Redistributable. Ponekad je teško suziti koji je krivac, ali dobro mjesto za početak je naš članak o C ++ Redistributables, koji također sadrži nekoliko koraka za rješavanje problema i veze na koje možete preuzeti najnovije verzije izravno s Microsofta.
  • Aplikacija s kojom je došao DLL . Ako je DLL instaliran zajedno s aplikacijom, umjesto da je dio zasebnog paketa, najbolje je samo ponovno instalirati aplikaciju. Neke aplikacije omogućuju vam popravak umjesto potpune ponovne instalacije. Bilo koja opcija trebala bi raditi, jer popravak obično traži datoteke koje nedostaju u instalacijskim mapama.

Ako sve to zakaže, možda ćete moći kontaktirati dobavljača aplikacije i zatražiti kopiju pojedinačne DLL datoteke. Neke su tvrtke otvorene za ovaj zahtjev; neki nisu. Ako naiđete na tvrtku koja neće pružati pojedinačne datoteke, barem će moći ponuditi druge prijedloge za rješavanje vašeg problema.