Когато получите грешка, че Windows не може да намери конкретен DLL файл, може да бъде ужасно изкусно да изтеглите файла от един от многото DLL сайтове там. Ето защо не трябва.
Преди да започнем защо не трябва да изтегляте файлове от динамична библиотека (DLL) от Интернет, нека първо да разгледаме какви са DLL файловете. DLL файлът е библиотека, която съдържа набор от кодове и данни за извършване на определена дейност в Windows. Приложенията могат да се обадят на тези DLL файлове, когато се нуждаят от тази дейност. DLL файловете много приличат на изпълними файлове (EXE), с изключение на това, че DLL файловете не могат да се изпълняват директно в Windows. С други думи, не можете да кликнете двукратно върху DLL файл, за да го стартирате по същия начин, както бихте направили EXE файл. Вместо това, DLL файловете са предназначени да бъдат извиквани от други приложения. Всъщност, те са предназначени да бъдат призовавани от множество приложения наведнъж. Частта "връзка" на името на DLL също предлага друг важен аспект. Няколко DLL могат да бъдат свързани заедно, така че когато се извиква един DLL, се извикват и други DLL-и едновременно.
Windows себе си прави широко използване на DLL, като обиколка през C: \ Windows \ System32
папка може да ви кажа. Като пример за това, за което говорим, нека разгледаме системния файл на Windows "comdlg32.dll". Този файл, известен още като библиотеката на обикновените диалогови прозорци, съдържа код и данни за изграждането на много от общите диалогови прозорци, които виждате Прозорец-диалогови прозорци за неща като отваряне на файлове, отпечатване на документи и т.н. Инструкциите в този DLL обработват всичко от получаването и интерпретирането на съобщения, предназначени за диалоговия прозорец, за да укажете как изглежда диалоговият прозорец на екрана ви. Очевидно е, че множество приложения могат да се обадят на този DLL едновременно, в противен случай няма да можете да отворите диалогов прозорец (като този по-долу) в повече от едно приложение наведнъж.
DLL позволява кодът да бъде модулиран и повторно използван, което означава, че разработчиците не трябва да прекарват времето си в писането на код от нулата, за да изпълняват светски или общи функции. И въпреки че разработчиците ще създадат свои собствени DLL файлове, които да инсталират с приложенията си, по-голямата част от DLL-тата, наречени от приложенията, всъщност са пакетирани с Windows или с допълнителни пакети, като Microsoft .NET Framework или Microsoft C ++ Redistributables. Другото голямо предимство на модулиращия код по този начин е, че актуализациите са по-лесни за прилагане към всеки DLL, отколкото към цялото приложение, особено когато тези DLL не идват от разработчика на приложението. Например, когато Microsoft актуализира определени DLL в своята .NET Framework, всички приложения, които използват тези DLL, могат незабавно да се възползват от актуализираната сигурност или функционалност.
Така че, с малко разбиране за DLL в коланите ни, защо да не ги изтегляте от Интернет, когато някой липсва от вашата система?
Най-често срещаният проблем, с който ще се сблъскате с изтеглените DLL файлове, е, че те са остарели. Много от сайтовете на DLL-та там получават своите DLL файлове, като просто ги качват от собствените си или от компютрите на техните потребители. Вероятно можете да видите проблема вече. Повечето от тези сайтове просто искат трафика ви и след като се качи DLL, те имат малък стимул да гарантират, че файлът се актуализира. Добавете към това, че продавачите обикновено не публикуват актуализираните DLL в обществото като отделни файлове и можете да видите, че дори сайтовете, коитоопитвам да поддържат актуализирани файлове, не е вероятно да бъде много успешна.
Съществува и още един проблем, че DLL обикновено се интегрират в пакети. Актуализирането на един DLL в пакет често се придружава от актуализации на други свързани DLL в един и същ пакет, което означава, че дори при малко вероятното събитие да получите актуален DLL файл, няма да получите свързани файлове, които също имат бяха актуализирани.
Макар и по-рядко, потенциално много по-лош проблем е, че DLL-ите, които изтегляте от други източници, различни от производителя, понякога могат да бъдат заредени с вируси или друг злонамерен софтуер, който може да зарази компютъра ви. Това важи особено за сайтове, които не са много внимателни за това, къде получават файловете си. И не е като тези сайтове ще излязат от пътя си, за да ви разкажа за рисковите източници. Наистина страшната част е, че ако изтеглите заразен DLL файл, рискувате - от самото естество на DLL файловете - давайки на файла по-дълбок достъп, отколкото може да получи обикновен заразен файл.
Добрата новина тук е, че добро антивирусно приложение в реално време обикновено може да открие тези инфектирани DLL файлове, преди те да бъдат спасени в системата ви и да им попречат да навредят. Все пак, трябва да помните, че дори една страхотна антивирусна програма може да не ви осигури добра защита. Ако имате навика да изтегляте рискови файлове, вероятно ще ви настигне в определен момент. Най-добре е просто да избегнете тези DLL сайтове.
Въпреки че е възможно само един DLL файл на компютъра ви да е повреден или изтрит, е по-вероятно другите DLL файлове или свързаните с тях файлове за приложения да са корумпирани или да липсват. Причината, поради която получавате грешка за един конкретен файл, е, че това е първата грешка, с която се е сблъскала приложението, преди да се срине, и просто не сте уведомен за останалото. Това може да е вярно независимо от причината за проблема.
Защо да липсват или да се корумпират DLL файловете? Може да се окаже, че друго пристрастено приложение или актуализация се е опитало да замени файла и не е успешно или го е заменило с неактуално копие. Това може да е грешка при инсталирането на основното ви приложение или в пакет като .NET. Възможно е дори да имате друг проблем, като лоши сектори на твърдия диск, които предотвратяват правилното зареждане на файла.
Единственият начин да се уверите, че получавате стабилен, актуален и чист DLL е да го получите чрез източника, от който произхожда. Обикновено този източник ще бъде:
Ако всичко това не успее, може да се свържете с доставчика на приложението и да поискате копие от отделен DLL файл. Някои компании са отворени за това искане; някои не са. Ако се намирате в компания, която няма да предоставя отделни файлове, те поне ще могат да предлагат други предложения за решаване на проблема ви.