Co to są pliki DLL i dlaczego brakuje jednego z moich komputerów?
Gdy pojawi się błąd informujący, że system Windows nie może znaleźć określonego pliku DLL, może być bardzo kusząco, aby pobrać plik z jednej z wielu witryn DLL tam. Oto dlaczego nie powinieneś.
Czym są biblioteki DLL?
Zanim zaczniemy, dlaczego nie powinieneś pobierać plików Dynamic Link Library (DLL) z Internetu, najpierw przyjrzyjmy się, czym są pliki DLL. Plik DLL jest biblioteką zawierającą zestaw kodu i danych do wykonywania określonej czynności w systemie Windows. Aplikacje mogą następnie wywoływać te pliki DLL, gdy wymagają wykonania tej czynności. Pliki DLL są bardzo podobne do plików wykonywalnych (EXE), z tym wyjątkiem, że plików DLL nie można bezpośrednio wykonać w systemie Windows. Innymi słowy, nie można dwukrotnie kliknąć pliku DLL, aby uruchomić go w taki sam sposób jak plik EXE. Zamiast tego pliki DLL są zaprojektowane tak, aby mogły być wywoływane przez inne aplikacje. W rzeczywistości są one przeznaczone do wielokrotnego uruchamiania przez wiele aplikacji. Część "link" nazwy DLL również sugeruje inny ważny aspekt. Wiele bibliotek DLL można ze sobą łączyć, więc gdy jedna biblioteka DLL jest wywoływana, wiele innych bibliotek DLL jest również wywoływanych w tym samym czasie.
Sam system Windows często wykorzystuje biblioteki DLL jako przewodnik po C: \ Windows \ System32
folder może ci powiedzieć. Jako przykład tego, o czym rozmawiamy, rozważmy plik systemu Windows "comdlg32.dll". Ten plik, znany również jako Common Dialog Box Library, zawiera kod i dane do budowania wielu popularnych okien dialogowych, które widzisz. Okna dialogowe Windows dla rzeczy takich jak otwieranie plików, drukowanie dokumentów i tak dalej. Instrukcje zawarte w tym pliku DLL obsługują wszystko, począwszy od odbierania i interpretowania wiadomości przeznaczonych dla okna dialogowego, a kończąc na określaniu wyglądu okna dialogowego na ekranie. Oczywiście wiele aplikacji może wywoływać tę bibliotekę DLL w tym samym czasie, w przeciwnym razie nie będzie można otworzyć okna dialogowego (takiego jak poniżej) w więcej niż jednej aplikacji naraz.
Biblioteki DLL umożliwiają kodowanie i ponowne wykorzystanie kodu, co oznacza, że programiści nie muszą poświęcać czasu na pisanie kodu od zera, aby wykonywać zwykłe lub powszechne funkcje. Mimo że programiści będą tworzyć własne biblioteki DLL do zainstalowania za pomocą aplikacji, większość bibliotek DLL wywoływanych przez aplikacje jest w rzeczywistości dostarczana z Windows lub z dodatkowymi pakietami, takimi jak Microsoft .NET Framework lub Microsoft Redistributables. Inną dużą zaletą modularyzacji kodu w ten sposób jest to, że aktualizacje są łatwiejsze do zastosowania do każdej biblioteki DLL, a nie do całej aplikacji, szczególnie gdy te biblioteki DLL nie pochodzą od autora aplikacji. Na przykład, gdy firma Microsoft aktualizuje niektóre biblioteki DLL w środowisku .NET Framework, wszystkie aplikacje korzystające z tych bibliotek DLL mogą natychmiast skorzystać z aktualizacji zabezpieczeń lub funkcji.
Pobrane biblioteki DLL mogą być nieaktualne
Tak więc, przy odrobinie zrozumienia bibliotek DLL pod naszymi paskami, dlaczego nie pobrać ich z Internetu, gdy jeden z nich brakuje w systemie?
Najczęstszym problemem z pobranymi plikami DLL jest ich nieaktualność. Wiele witryn DLL uzyskuje swoje biblioteki DLL, przesyłając je tylko z komputerów własnych lub ich użytkowników. Prawdopodobnie już widzisz problem. Większość z tych witryn chce tylko Twojego ruchu, a po przesłaniu pliku DLL ma niewielką motywację, aby plik był aktualny. Dodajmy do tego, że dostawcy zwykle nie udostępniają publicznie zaktualizowanych bibliotek DLL jako pojedynczych plików, a można zauważyć, że nawet strony, które próbować aktualizowanie plików nie będzie bardzo udane.
Istnieje również dalszy problem, że biblioteki DLL są zwykle integrowane w pakiety. Aktualizacja jednej biblioteki DLL w pakiecie często towarzyszy aktualizacjom innych powiązanych bibliotek DLL w tym samym pakiecie, co oznacza, że nawet w mało prawdopodobnym przypadku, gdy otrzymasz aktualny plik DLL, nie uzyskasz powiązanych plików, które również mają został zaktualizowany.
Pobrane biblioteki DLL mogą być zainfekowane
Choć mniej powszechny, potencjalnie znacznie gorszy problem polega na tym, że pliki DLL pobierane ze źródeł innych niż dostawca czasami mogą być ładowane za pomocą wirusów lub innego złośliwego oprogramowania, które może zainfekować komputer. Dotyczy to szczególnie witryn, które nie są zbyt ostrożne, skąd pobierają swoje pliki. I nie jest tak, że te strony będą starały się opowiedzieć o ich ryzykownych źródłach. Naprawdę przerażające jest to, że jeśli pobierzesz zainfekowany plik DLL, ryzykujesz - z samej natury plików DLL - dając temu plikowi głębszy dostęp niż zwykły zainfekowany plik może uzyskać.
Dobrą wiadomością jest to, że dobra aplikacja antywirusowa działająca w czasie rzeczywistym może zwykle wykryć te zainfekowane pliki DLL, zanim zostaną one faktycznie zapisane w systemie i zapobiec ich uszkodzeniu. Pamiętaj jednak, że nawet świetny program antywirusowy może nie zapewnić Ci doskonałej ochrony. Jeśli masz zwyczaj ściągania ryzykownych plików, to w pewnym momencie może cię to złapać. Najlepiej po prostu unikać tych witryn DLL.
Prawdopodobnie nie rozwiążą problemu
Chociaż możliwe jest, że tylko jeden plik DLL na Twoim komputerze został uszkodzony lub usunięty, jest bardziej prawdopodobne, że inne pliki DLL lub powiązane pliki aplikacji są również uszkodzone lub ich brakuje. Powodem, dla którego otrzymujesz błąd dotyczący jednego konkretnego pliku, jest to, że jest to pierwszy błąd napotkany przez aplikację przed awarią i po prostu nie jesteś powiadamiany o pozostałych. Może to być prawda bez względu na przyczynę problemu.
Dlaczego biblioteki DLL mogą zostać zagubione lub uszkodzone? Być może inna błędna aplikacja lub aktualizacja próbowała zastąpić plik i się nie powiodła lub zastąpiła go nieaktualną kopią. Może to być błąd w instalacji głównej aplikacji lub w pakiecie takim jak .NET. Może się zdarzyć, że na dysku twardym pojawią się inne, niepoprawne sektory, które uniemożliwiają prawidłowe ładowanie pliku.
Jak naprawić błąd My DLL??
Jedynym sposobem na zapewnienie stabilnej, aktualnej i czystej biblioteki DLL jest uzyskanie jej przez źródło, z którego pochodzi. Zazwyczaj źródłem będzie:
- Twój nośnik instalacyjny Windows. Jest mało prawdopodobne, że będziesz mógł po prostu skopiować plik DLL z nośnika instalacyjnego, ale masz szybką możliwość wypróbowania przed zrobieniem czegoś tak drastycznego, jak ponowne wpisanie systemu Windows. Możesz użyć narzędzia Windows Resource Protection (często określanego jako systemowy sprawdzacz plików lub SFC), który skanuje i naprawia uszkodzone lub brakujące pliki systemowe w systemie Windows. Powinieneś mieć pod ręką nośnik instalacyjny, na wypadek konieczności skopiowania pliku. (Jeśli nie masz płyty instalacyjnej, możesz ją pobrać tutaj.)
- Pakiety Microsoft .NET Framework. Kilka wersji .NET jest automatycznie instalowanych wraz z Windows, a wiele aplikacji również instaluje pliki z tych pakietów. Możesz przeczytać nasz artykuł na temat platformy .NET, który zawiera także porady dotyczące wyszukiwania i naprawiania powiązanych problemów.
- Różne pakiety redystrybucyjne Microsoft Visual C ++. W zależności od używanych aplikacji, na komputerze może być zainstalowanych wiele wersji redystrybucji C ++. Czasami trudno jest określić, który z nich jest winowajcą, ale dobrym początkiem jest nasz artykuł o Redystrybucjach C ++, który zawiera również kilka kroków rozwiązywania problemów i linki, gdzie można pobrać najbardziej aktualne wersje prosto z Microsoft.
- Aplikacja, z której pochodzi biblioteka DLL. Jeśli biblioteka DLL została zainstalowana razem z aplikacją, a nie częścią oddzielnego pakietu, najlepszym rozwiązaniem jest ponowne zainstalowanie aplikacji. Niektóre aplikacje umożliwiają wykonanie naprawy zamiast pełnej ponownej instalacji. Każda z tych opcji powinna działać, ponieważ naprawa zazwyczaj szuka brakujących plików w folderach instalacyjnych.
Jeśli wszystko zawiedzie, możesz skontaktować się z dostawcą aplikacji i poprosić o kopię pojedynczego pliku DLL. Niektóre firmy są otwarte na tę prośbę; niektóre nie są. Jeśli natkniesz się na firmę, która nie dostarczy pojedynczych plików, mogą przynajmniej zaoferować inne sugestie dotyczące rozwiązania problemu.