Što su DLL datoteke, i zašto je jedan nedostaje iz mog računala?
Kada dobijete pogrešku govoreći da Windows nije mogao pronaći određenu DLL datoteku, može biti vrlo primamljivo preuzeti datoteku s jednog od mnogih DLL stranica. Evo zašto ne bi trebao.
Što su DLL-ovi?
Prije nego što počnemo s time zašto ne bi trebali preuzimati datoteke Dynamic Link Library (DLL) s Interneta, najprije pogledajmo š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 (EXE) datotekama, osim što se DLL datoteke ne mogu izravno izvršavati u sustavu Windows. Drugim riječima, ne možete dvaput kliknuti DLL datoteku da biste je pokrenuli na isti način na koji biste koristili EXE datoteku. Umjesto toga, DLL datoteke su dizajnirane kako bi ih pozvale druge aplikacije. Zapravo, dizajnirani su da ih pozove više aplikacija odjednom. “Link” dio DLL imena također sugerira još jedan važan aspekt. Više DLL-ova može se povezati zajedno, tako da kada se pozove jedan DLL, istovremeno se naziva i više drugih DLL-ova..
Sama Windows obilato koristi DLL-ove, kao obilazak C: \ Windows \ System32
mapa može vam reći. Kao primjer onoga o čemu govorimo, razmotrimo datoteku sustava Windows "comdlg32.dll." Ova datoteka, inače poznata kao Knjižnica zajedničkih dijaloga, sadrži kôd i podatke za izgradnju mnogih zajedničkih dijaloških okvira koje vidite u Windows-dijalozi za stvari kao što su otvaranje datoteka, ispisivanje dokumenata i tako dalje. Upute u ovom DLL-u obrađuju sve od primanja i tumačenja poruka namijenjenih dijaloškom okviru do navođenja načina na koji dijaloški okvir izgleda na zaslonu. Očito je da više aplikacija može istodobno nazvati ovaj DLL, inače ne biste mogli otvoriti dijaloški okvir (poput onog dolje) u više od jedne aplikacije odjednom.
DLL-ovi omogućuju modulariziranje i ponovno korištenje koda, što znači da programeri ne moraju trošiti vrijeme na pisanje koda od nule za obavljanje svakodnevnih ili zajedničkih funkcija. Iako će programeri stvoriti vlastite DLL-ove za instalaciju sa svojim aplikacijama, velika većina DLL-ova koje zovu aplikacije zapravo su u paketu sa sustavom Windows ili s dodatnim paketima, kao što je Microsoft .NET Framework ili Microsoft C ++ Redistributables. Druga velika prednost modulariziranja koda na ovaj način je da se ažuriranja lakše primjenjuju na svaki DLL, a ne na cijelu aplikaciju - pogotovo kada te DLL-ove nisu došle od razvijatelja 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.
Preuzeti DLL-ovi mogu biti zastarjeli
Dakle, uz malo razumijevanja DLL-ova pod našim pojasima, zašto ih ne biste preuzeli s interneta kada vam nedostaje sustav?
Najčešći problem na koji ćete naići s preuzetim DLL-ovima je da su zastarjeli. Mnogi DLL-ovi tamo dobivaju svoje DLL-ove samo tako da ih učitavaju s vlastitih ili njihovih korisničkih računala. Vjerojatno možete već vidjeti problem. Većina tih web-mjesta samo žele vaš promet, a nakon što je DLL učitan, oni imaju malo poticaja kako bi osigurali da je datoteka ažurirana. Dodajte tome da dobavljači obično ne objavljuju ažurirane DLL-ove u javnosti kao pojedinačne datoteke i možete vidjeti da čak i web-lokacije koje probati ažuriranje datoteka vjerojatno neće biti uspješno.
Tu je i daljnji problem da su DLL-ovi obično integrirani u pakete. Ažuriranje jednog DLL-a u paketu često prati i ažuriranje drugih povezanih DLL-ova u istom paketu, što znači da čak iu malo vjerojatnom slučaju da dobijete ažuriranu DLL datoteku, nećete dobiti povezane datoteke koje su također ažurirano.
Preuzeti DLL-ovi mogu biti zaraženi
Iako rjeđe, potencijalno mnogo gori problem je to što DLL-ovi koje preuzimate iz drugih izvora, a ne od dobavljača, ponekad mogu biti opterećeni virusima ili drugim zlonamjernim programima koji mogu zaraziti vaše računalo. To posebno vrijedi na web-lokacijama koje nisu previše oprezne o tome gdje dobivaju svoje datoteke. I ne radi se o tim stranicama koje će vam se oteti kako bi vam ispričale svoje rizične izvore. Stvarno zastrašujući dio je da ako preuzmete zaraženu DLL datoteku, rizikujete po samoj prirodi DLL datoteka koje daju dublji pristup datoteci nego što bi inače mogli dobiti obična zaražena datoteka..
Dobra vijest je da dobra, antivirusna aplikacija u stvarnom vremenu obično može otkriti te zaražene DLL datoteke prije nego što ih se zapravo sprema u vaš sustav i spriječi ih da naprave bilo kakvu štetu. Ipak, morate zapamtiti da čak i veliki antivirusni program ne može pružiti savršenu zaštitu. Ako napravite naviku preuzimanja rizičnih datoteka, vjerojatno će vas u nekom trenutku uhvatiti. Najbolje je izbjegavati te DLL stranice.
Oni vjerojatno neće riješiti vaš problem
Iako je moguće da je samo jedna DLL datoteka na vašem računalu dobila oštećene ili izbrisane, veća je vjerojatnost da su i druge DLL datoteke ili povezane datoteke aplikacija također oštećene ili nedostaju. Razlog zbog kojeg dobivate pogrešku o jednoj određenoj datoteci jest da je to prva pogreška koju je aplikacija susrela prije pada i jednostavno niste obaviješteni o ostatku. To može biti istina bez obzira na uzrok problema.
Zašto DLL-ovi nedostaju ili su oštećeni? Možda je neka druga pogrešna aplikacija ili ažuriranje pokušala zamijeniti datoteku i nije uspjela, ili ju je zamijenila zastarjelom kopijom. To može biti pogreška u instalaciji vaše glavne aplikacije ili paketa kao što je .NET. Može se dogoditi da na vašem tvrdom disku imate još jedan problem poput loših sektora koji sprječavaju ispravno učitavanje datoteke.
Kako mogu popraviti moje DLL pogreške?
Jedini način da osigurate dobivanje stabilnog, ažuriranog i čistog DLL-a je da ga dobijete kroz izvor iz kojeg je nastao. Tipično, taj će izvor biti:
- Instalacijski medij sustava Windows. Malo je vjerojatno da ćete moći jednostavno kopirati DLL datoteku s vašeg instalacijskog medija, ali imate brzu opciju da pokušate prije nego učinite nešto tako drastično kao što je ponovna instalacija sustava Windows. Možete koristiti alat za zaštitu resursa sustava Windows (često nazvan sustav za provjeru sistemskih datoteka ili SFC), koji će skenirati i popraviti oštećene ili nestale sistemske datoteke u sustavu Windows. Trebali biste imati pri ruci instalacijski medij pri izvođenju alata, samo u slučaju da treba kopirati datoteku od tamo. (Ako nemate instalacijski disk, možete ga preuzeti ovdje.)
- Microsoft .NET Framework paketi. Nekoliko verzija programa .NET 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 okviru, koji također ima neke savjete za pronalaženje i popravak povezanih problema.
- Razni Microsoftovi Visual C ++ redistributivni paketi. Ovisno o aplikacijama koje upotrebljavate, na računalu možete imati instaliranu više verzija programa C ++ Redistributable. Ponekad je teško suziti koji je krivac, ali dobro mjesto za početak je naš članak o C ++ redistributable, koji također sadrži nekoliko koraka za rješavanje problema i linkove gdje možete preuzeti najnovije verzije izravno iz Microsofta.
- Aplikacija s kojom je DLL došao. Ako je DLL instaliran zajedno s aplikacijom, a ne kao dio zasebnog paketa, najbolje je samo ponovno instalirati aplikaciju. Neke aplikacije omogućuju popravak umjesto pune ponovne instalacije. Obje opcije bi trebale raditi, jer popravak obično traži nestale datoteke u instalacijskim mapama.
Ako sve to ne uspije, možete kontaktirati dobavljača aplikacije i zatražiti kopiju pojedinačne DLL datoteke. Neke tvrtke otvorene su za ovaj zahtjev; neke nisu. Ako naiđete na tvrtku koja neće dati pojedinačne datoteke, oni će barem moći ponuditi druge prijedloge za rješavanje vašeg problema.