msvcrt.dll是标准的微软C运行库文件。
属于:Windows
系统DLL文件:否
常见错误:FileNotFound,MissingFile,ExceptionErrors
安全等级(0-5):0
间谍软件:否
广告软件:否
msvcrt.dll(7.0.2600.0)
包含在软件
名字:WindowsXPHomeEdition,Deutsch
执照:商业
文件细节
文件路径:C:\WINDOWS\WinSxS\x86_Microsoft.Windows.CPlusPlusRuntime_6595b64144ccf1df_7.0.0.0_x-ww_2726e76a\msvcrt.dll
文件日期:2002-08-2914:00:00
版本:7.0.2600.0
文件大小:322.560字节
软件大小:0.13Mb[1]
软件星级:2.5
软件语言:中文简体
开发商:HOMEPAGE
软件授权:免费版本
更新时间:2010-01-1816:54:52
应用平台:XP/2K/Vista/9x
CRC32:BC31AE30
MD5:4200BE3808F6406DBE45A7B88DAE5035
SHA1:F0309D5162754358F80EED4CFF93D0362B0FDFFD
某些外文软件在安装后会引起系统的崩溃,这对于在国外工作学习又使用中文系统的朋友们通常意味着一场灾难,下面的文字以飞信的一个经典BUG为例,剖析这种现象产生的原因以及解决方法。
首先,我们让该问题重现,即双击飞信客户端的桌面图标,让其弹出该错误对话框。错误提示出现了,我们先不急着点击“OK(确定)”按钮,而是启动一个调试程序。(本例中使用著名的MicrosoftWindbg工具进行调试分析)然后在“File(文件)”菜单中选择“AttachtoaProcess...(附加到一个进程)”。这里之所以要选择AttachtoaProcess就是因为我们要将调试器跟踪到当前这个产生错误的进程,然后从内存中实时察看相关的线程堆栈甚至API函数的调用。Windbg中还支持其他的几种类型的调试,须根据具体情形按需选择。附加到该进程之后的结果如下图所示:
结果告诉我们,进程中msvcrt.dll存有的过程有_except_handler2以及_except_handler3,而恰恰没有_except_handler4。鉴于以上返回结果,我们可以初步断定,错误的起因是因为程序不能执行MSVCRT.DLL中的_except_handler4_common过程,而且原因是当前缺少这个。此时,我们需要借助MicrosoftDependencyWalker进行辅助分析并且确认。
我们启动MicrosoftDependencyWalker,打开该dwmapi.dll,可以发现,该DLL文件的运行将会首先调用MSVCRT.DLL,而且下图中也标示出来了,在当前调用的MSVCRT.DLL中,缺少一个函数"_except_handler4_common",这起好与我们看到的错误现象相以及Windbg分析的结果吻合。如下图所示:
到这里,问题就已经清楚了。正是由于本机的在启动时调用了用于Vista的DLL组件dwmapi.dll,而该DLL又要尝试调用一个Vista下msvcrt.dll才有的过程,才出现了该错误提示。因为我们发现,该错误提示并不影响之后程序的正常使用,而且我们所使用的环境是WindowsXP而非Vista,所以推断该调用dwmapi.dll的过程是非必要的,于是将其重命名或是删除到回收站,再次启动,迎来的是程序正常的使用……之后我查阅了大量的KB资料以及VisualStudio的MSDN资料,发现_except_handler是VC++编译器自带的一个内部异常处理。而版本4的_except_handler4_commonhandler又仅存在于Vista以及之后的系统之中。而且值得注意的是,很多这样子的错误都是由于系统中存在有来自更高级版本系统的文件造成的,而文件的来源于一般有几种,一般是修改系统时自己放进去的或者别的安装程序带入的,也有情况是盗版改版的操作系统中存有的,再有就是本例中的情形——安装程序可同时用于WindowsXP以及WindowsVista。可能是由于XP英文版与中文版的环境的不同,加载调用为Vista准备的dwmapi.dll从而产生了此错误。
注:本例中并没有介绍使用DependencyWalker的“Profile(剖析)”功能,因为该启动不是靠单文件的,因此比较复杂,而且本例中因为该错误不能成功剖析整个启动过程,剖析过后同样能够发现问题。
一、如果您的系统提示“没有找到MSVCRT.DLL”或者“缺少MSVCRT.DLL”等类似错误信息,请把MSVCRT.DLL下载到本机
二、直接拷贝该文件到系统目录里:
1、Windows95/98/Me系统,则复制到C:WindowsSystem目录下。
2、WindowsNT/2000系统,则复制到C:WINNTSystem32目录下。
3、WindowsXP系统,则复制到C:Windows\System32目录下。
4、windowsvista/7系统,也是复制到C:\WINDOWS\system32目录下。
三、然后打开“开始-运行-输入regsvr32MSVCRT.DLL”,回车即可解决错误提示!
四、对于初学者,可以使用ReSystem这样的工具替换MSVCRT.DLL以绕开系统的文件保护。
公司名称:MicrosoftCorporation
文件描述:WindowsNTCRTDLL
文件操作系统:WindowsNT,Windows2000,WindowsXP,Windows2003
文件类型:Application
文件版本:7.0.2600.0
内部名:msvcrt.dll
法律版权:©MicrosoftCorporation.Allrightsreserved.
原始的文件名:msvcrt.dll
产品名称:Microsoft®Windows®OperatingSystem
产品版本:6.1.8638.0