If-Koubou

Co to są pliki DLL i dlaczego brakuje jednego z moich komputerów?

Co to są pliki DLL i dlaczego brakuje jednego z moich komputerów? (Jak)

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 to biblioteka zawierająca 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 uruchamiania przez wiele aplikacji naraz. 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 szeroko wykorzystuje biblioteki DLL, jako przewodnik po C: \ Windows \ System32 folder może ci powiedzieć. Jako przykład tego, o czym mówimy, rozważmy plik systemu Windows "comdlg32.dll". Ten plik, znany również pod nazwą 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 w tym pliku DLL obsługują wszystko, począwszy od odbierania i interpretowania komunikatów 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 na raz.

Biblioteki DLL pozwalają na modularyzację kodu i ponowne jego wykorzystanie, co oznacza, że ​​programiści nie muszą poświęcać czasu na pisanie kodu od zera, aby wykonywać zwykłe lub powszechne funkcje. I chociaż programiści utworzą własne biblioteki DLL do zainstalowania z ich aplikacjami, ogromna 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 Redystrybucyjne Microsoft. 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 Microsoft aktualizuje określone biblioteki DLL w środowisku .NET Framework, wszystkie aplikacje korzystające z tych bibliotek DLL mogą natychmiast skorzystać z zaktualizowanych zabezpieczeń lub funkcji.

Pobrane biblioteki DLL mogą być nieaktualne

Tak więc, z niewielkim zrozumieniem 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 po prostu przesyłając je 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 zapewnić aktualność pliku. 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órepróbować aktualizacja plików nie będzie bardzo udana.

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ę przekazać ci informacje 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ż może uzyskać zwykły zainfekowany plik.

Dobrą wiadomością jest to, że dobra aplikacja antywirusowa działająca w czasie rzeczywistym może zazwyczaj 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 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 reszcie. 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 poprzez ź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ć przy sobie nośnik instalacyjny podczas uruchamiania narzędzia, na wypadek, gdyby musiał on skopiować plik. (Jeśli nie masz płyty instalacyjnej, możesz ją pobrać tutaj.)
  • Pakiety Microsoft .NET Framework. Kilka wersji .NET jest automatycznie instalowanych wraz z systemem 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ł na temat Redystrybucyjnych C ++, który zawiera również kilka kroków rozwiązywania problemów i łącza, z których 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 instalacji.

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 napotkasz firmę, która nie będzie dostarczać pojedynczych plików, mogą przynajmniej zaoferować inne sugestie dotyczące rozwiązania problemu.