找不到dll問題之第三課《其它篇》
除了Visual C++運行庫和DirectX運行庫,其余找不到dll問題一般可以通過重裝報錯exe對應(yīng)軟件解決。
根據(jù)錯誤彈窗標(biāo)題的exe文件名,以及Everything軟件搜索exe文件名得知的文件路徑,還不行就再查看exe屬性詳細(xì)信息描述和數(shù)字簽名,根據(jù)這些判斷exe所屬軟件,卸載或重新安裝。
有時候可以用Everything搜索下問題dll,看exe同目錄下是否存在該dll,又或者在別的路徑有。
除此之外還有下面幾種原因:
一、壓縮包里的游戲或軟件,沒有解壓的前提下直接壓縮包里雙擊打開,會出現(xiàn)找不到dll的錯誤。
因為除了極個別解壓軟件會在你雙擊壓縮包里的某個文件時自動解壓全部文件,剩下大部分解壓軟件只會解壓你雙擊的exe文件到臨時目錄,其余dll還留在壓縮包里,這就導(dǎo)致解壓的exe文件找不到壓縮包里其余dll。
二、有些人在裝好軟件后,在桌面沒看到快捷方式,就自作聰明去軟件目錄把主程序exe剪切到桌面打開,然后就是報錯找不到dll。
正確的做法應(yīng)該是右擊主程序exe,發(fā)送到,桌面快捷方式,而不是將exe剪切移動到桌面。
三、電腦上的殺毒軟件誤報將軟件的dll當(dāng)病毒殺掉了。
檢查殺毒軟件查殺記錄或隔離區(qū)可以看到,恢復(fù)并添加信任即可,前提你很確定那不是病毒(可以上傳Virustotal檢查判斷)。
四、電腦中了病毒(以白加黑木馬居多)、又或者流氓軟件,相關(guān)dll被清理后啟動項殘留還在。
解決方法是根據(jù)錯誤彈窗標(biāo)題exe,用Autoruns啟動項管理軟件,軟件主界面過濾器框填exe名,可以看到相關(guān)啟動項,取消勾選或刪掉。對startup里非lnk快捷方式啟動項無效。
又或者問題exe不是開機啟動,是由別的exe啟動項調(diào)用時,需要通過火絨自定義執(zhí)行規(guī)則找出元兇。對資源管理器dll啟動項執(zhí)行的exe無效。
五、一些防泄密軟件驅(qū)動,可能會攔截每個啟動的進程,注入代碼加載自己的dll。當(dāng)防泄密軟件只剩下殘留驅(qū)動時,可能會出現(xiàn)報錯找不到防泄密軟件的dll。
卸載報錯軟件后重裝了依舊報錯時可以考慮是這個原因。用ARK工具查看內(nèi)核回調(diào)驅(qū)動或刪除loadimage回調(diào)測試可以找出問題驅(qū)動。
六、exe目錄里存在報錯dll,且dll正常,依舊提示找不到dll,可能是exe當(dāng)前路徑被篡改導(dǎo)致。
有些exe會獲取當(dāng)前路徑加載某個dll,而當(dāng)前路徑被篡改時可能會報錯找不到dll。比如某訊飛語音輸入法就有過這個毛病,把別的exe當(dāng)前目錄設(shè)置成輸入法目錄,導(dǎo)致報錯找不到存在的dll。
七、某些加殼加密的exe有bug,某些系統(tǒng)下可能會出現(xiàn)找不到存在的dll。
八、軟件打開時報錯找不到某個不屬于軟件的dll。除了上面說的防泄密軟件外,還可能是軟件加載的第三方插件損壞(以office類軟件常見),刪除相關(guān)插件即可。
又或者是中了感染型病毒,看exe數(shù)字簽名是否存在且正??梢耘袛啵ㄇ疤醗xe原本有數(shù)字簽名,大廠軟件一般都有)。
是不是運行庫dll,可以在我之前發(fā)的兩篇文章里搜索dll文件名得知;是不是系統(tǒng)dll,可以在原版系統(tǒng)里搜索得知;是不是第三方軟件或驅(qū)動的dll,可以百度得知,或者網(wǎng)上下載dll后看數(shù)字簽名和詳細(xì)信息得知。