俞木發

一些軟件在運行出錯時會給出明確的錯誤提示。比如某軟件運行時提示計算機丟失MSVCP140.dll,需要重裝程序以解決問題(圖1)。
由于已經有明確的錯誤提示,可以先到“w w w.zhaodll.c om”下載對應的DLL文件,32位Windows的文件保存到“C:\Windows\System32”中,64位的復制到“C:\Windows\SysWOW64”。然后啟動命令提示符窗口,輸入并執行命令“regsvr32 msvcp140.dll”,注冊DLL文件即可。
如果執行上述的操作后系統又提示缺少某文件,那么一般就需要安裝缺失的完整運行庫。比如圖1所示的提示就是因為本機沒有安裝對應版本的VC運行庫,MSVCP140.dll是“Visual C++ Redistributable for Visual Studio”(以下簡稱為VS)運行庫文件,一般只要到微軟官網下載VS 2010以上版本安裝即可(圖2)。
注意:安裝時要選擇32位或64位版本的VS,主要是根據運行的程序是32位還是64位來選擇,比如出錯的程序A是32位程序,那么就需要下載32位的VS(無論A是在32位Windows,還是在64位Windows中運行)。當然,為了避免以后遇到類似的問題,在64位系統(如Windows 11)中可以同時安裝32位和64位版本的VS。
有些程序運行后雖然有提示,但沒有明確缺少某文件,或者運行后直接閃退,那么就需要自行查找出錯的原因,并根據原因選擇解決方案。
1通過事件日志查看出錯原因
如筆者在運行本機中的某個軟件時出錯,系統雖然有提示,但只是提示原因是“應用程序的并行配置不正確”(圖3)。
對于類似的錯誤,Windows會自動將出錯原因寫入系統日志。啟動“事件查看器”后展開“Windows日志→應用程序”,然后在右側的窗格中篩選“級別”為“錯誤”的日志,通過日志查看可以知道,上述軟件出錯的原因是“找不到從屬程序集”(圖4)。
而從原因描述中則可以知道,這個程序集是適合x86版的VC80,即本機缺少VS 20 05運行庫文件。到微軟官網下載所需的運行庫vc_redist.x86.exe并安裝即可(圖5)。
2自行收集出錯日志
如果程序運行出錯后沒有在系統日志中進行記載,那么可以借助系統自帶的命令程序SxsTrace.exe來收集錯誤數據。
首先以管理員身份啟動命令提示符并定位到D:\,輸入并執行“SxsTrace Trace -logfile:cfan.etl”命令,這樣會自動開始收集出錯信息,并將信息保存在“d:\cfan.etl”文件中。之后開始運行指定的程序,程序出錯后返回命令提示符界面。按下回車鍵停止收集(圖6)。
繼續輸入并執行命令“SxsTrace Parse-logfile:cfan.etl-out f ile:cfan.txt”,將收集信息的文件轉換為c fan.t x t文件。然后使用記事本程序打開“d:\cfan.txt”,其中錯誤信息顯示缺少“x64位Mic rosof t.VC90.MFC”,版本號是“9.0. 21022. 8”(圖7)。VC90對應的是VS2008,同上,到微軟網站下載對應的版本,安裝后即可解決問題。

DEP(數據執行保護)是Windows 10默認開啟的一項安全功能,有助于防止計算機受到病毒和其他安全威脅的破壞。但是一些程序可能和DEP不兼容,如果DEP發現計算機上的程序錯誤地使用內存,則會關閉此程序而導致運行出錯。比如出現內存不可讀寫錯誤、內存地址錯誤等(圖8)。
此時可以將出錯的程序添加到DEP的排除列表中來解決這個問題。不過,這個操作會降低系統的安全性。出現這種情況時建議先更換軟件,看看同樣功能的軟件能否在DEP下正常運行。如果確實需要使用這個軟件,可以打開“高級系統設置→高級”,點擊“性能”選項下的“設置”。然后在打開的窗口中切換到“數據執行保護”,單選“為除下列程序之外的所有程序和服務啟用DEP”,點擊“添加”,將出錯的程序添加到排除列表中即可(圖9)。