这个问题是我目前最头疼的问题。
我有一个VB6应用程序,它接收我几年前从它的原始开发人员那里继承的外部数据源。它在远程服务器上运行,运行一个月左右,然后每次启动时突然崩溃。发生这种情况时,我会查看事件查看器,看到oleaut32.dll有"故障"。我发现的修复是重新注册dll。然后应用程序启动并运行没有问题。但是,不可避免地,整个问题将在几个月后再次上升。
我所做的研究表明了许多可能导致这种情况的问题(恶意软件,补丁等),但是当这个应用程序再次失败时,每隔几个月就会在家中被调用,这种问题变得陈旧和令人厌烦。
关于如何缓解这样的问题的任何想法?
我希望用更高级别的语言重新编写应用程序,但由于多种商业原因,这现在不可行。
答案 0 :(得分:3)
VB6是一种更高级的语言。很多人问我们基本人的帮助,但在这样做的同时还要用掉我们的语言。
在任务计划程序中设置要在生成该事件消息时运行的任务。
所以在批处理文件中
regsvr32 oleaut32
"c:\some folder\your vb6 program.exe"
但始终包含完整的错误消息。这对我来说可能意味着什么。
我还会测试该服务器的硬件故障。
查看修补程序是否可用
在“控制面板”中(并选择左侧窗格中的“经典”视图),选择“问题报告和解决方案”(在“开始”搜索框中键入问题),转到“问题历史记录”,右键单击错误并选择“检查解决方案”。您也可以右键单击并选择详细信息以获取更多信息。在这里发布这些细节。
查看最近的系统更改是否导致
在“控制面板”中(并选择左侧窗格中的“经典”视图),选择“管理工具”,然后选择“可靠性和性能监视器”并选择“监视工具”,然后选择“可靠性监视器”(在“开始时搜此列表是按日期安装,卸载,Windows更新和崩溃的图表(向左滚动以查看更早的日期)。在安装或卸载某些内容后,查看您的崩溃是否已经发生。
标准硬件故障排除
首先让我们测试一下我们可以使用的硬件。硬件故障可能会出现很多软件故障,因此我们需要首先测试硬件。
请按顺序执行以下操作。内存故障可能导致磁盘损坏,磁盘故障可能导致磁盘损坏。磁盘损坏会导致文件损坏(SFC可以修复)。如果您遇到硬件错误停止并回发。不要运行带有错误内存的chkdsk。
内存诊断 如果您没有运行内存诊断,请执行此操作。单击开始 - 控制面板 - 在左侧窗格中选择经典视图 - 选择管理工具 - 然后选择内存诊断工具。
<强> S.M.A.R.T 强> 开始 - 所有程序 - 附件 - 右键单击命令提示符,然后选择以管理员身份运行。键入(或通过右键单击“命令提示符”窗口并选择“粘贴”进行复制和粘贴)。
Windows中的磁盘驱动器会自行监视即将发生的故障。该功能称为S.M.A.R.T.它将在30%的时间内检测即将发生的故障。在提升的命令提示符下键入(它是一行)
wmic /namespace:\\root\wmi PATH MSStorageDriver_FailurePredictStatus get active,predictfailure,reason /format:List
如果它处于活动状态,则表示如果没有,请在计算机的BIOS中打开它。
如果一切正常,预测失败应该是假的。有两个原因。
0 Unknown
255 Test - Not a failure
在Vista及更高版本中如果SMART预测失败,Windows会提示用户运行备份。
运行Chkdsk 在“计算机”中右键单击所有驱动器,选择“属性”,然后选择“工具”选项卡,再单勾选两个复选框,然后单击开始。重启。这将需要一夜之间。
<强> SFC 强> 单击开始 - 所有程序 - 附件 - 右键单击命令提示符并选择以管理员身份运行,检查文件是否损坏。键入(或通过右键单击“命令提示符”窗口并选择“粘贴”进行复制和粘贴)。
sfc /scannow
<强>热强> 热量可能导致这样的问题,也可能突然重新启动而不会崩溃。确保风扇没有被灰尘堵塞。
处理器(CPU) 英特尔有一个检查处理器的工具。
32位Windows https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=19791
64位Bit Windows https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=19792
对于内存诊断结果 单击开始 - 控制面板(并选择左侧窗格中的经典视图),选择管理工具,然后选择事件查看器,然后查看事件查看器(本地) - 应用程序和服务 - Microsoft - Windows - MemoryDiagnostic - 条目结果。
查找EventID是1201或1101,Source是MemoryDiagnostic-Results
双击该条目以获取该条目的详细信息。
对于Chkdsk结果
开始 - 所有程序 - 附件 - 右键单击“命令提示符”,然后选择“以管理员身份运行”。键入(或通过右键单击“命令提示符”窗口并选择“粘贴”进行复制和粘贴)。
edit c:\bootex.log
此文件中是否包含某些内容?
以下命令查询事件日志。
使用任何Windows版本的源名称进行引导时检查(因为它不同)。
wmic /append:"%userprofile%\desktop\DiskEvents.html" PATH Win32_NTLogEvent where (sourcename='Autocheck' or sourcename='Winlogon' or sourcename='WinInit') get /format:HForm
在Windows中运行chkdsk。
wmic /append:"%userprofile%\desktop\DiskEvents.html" PATH Win32_NTLogEvent where (sourcename='Chkdsk') get /format:HForm
有关在发现问题时Windows正常运行和自动修复期间检测到的磁盘问题的警告。
wmic /append:"%userprofile%\desktop\DiskEvents.html" PATH Win32_NTLogEvent where (sourcename='NTFS' or Sourcename='Disk') get /format:HForm
然后查看创建的文件。
start "" "%userprofile%\desktop\DiskEvents.html"
单击开始 - 控制面板(并选择左侧窗格中的经典视图),选择管理工具,然后选择事件查看器,然后查看应用程序和系统日志(在Windows日志下)以查看条目。
Look for EventID is 7 and Source is Disk
Look for EventID is 11 and Source is Disk
Look for EventID is 50 and Source is Disk
Look for EventID is 51 and Source is Disk
Look for EventID is 52 and Source is Disk
Look for EventID is 55 and Source is NTFS
Look for EventID is 130 and Source is NTFS
Look for EventID is 134 and Source is NTFS
Look for EventID is 137 and Source is NTFS
Look for EventID is 1001 and Source is Autochk
Look for EventID is 1001 and Source is Winlogon
Look for EventID is 1001 and Source is WinInit
Look for EventID is 1001 and Source is Chkdsk
Look for EventID is 26212 and Source is Chkdsk
Look for EventID is 26213 and Source is Chkdsk
Look for EventID is 26214 and Source is Chkdsk
双击该条目以获取该条目的详细信息。
P.S。 7和55是自动修复代码,其中Windows在运行中静默修复磁盘错误。 52是SMART警告。
如果结果没有从启动时间chkdsk转移到事件日志,那么结果可能在以下文件c:\ Bootex.log中。将结果移入事件日志时,将删除此文件。
对于SFC结果 开始 - 所有程序 - 附件 - 右键单击命令提示符,然后选择以管理员身份运行。键入(或通过右键单击“命令提示符”窗口并选择“粘贴”进行复制和粘贴)。
findstr /c:"[SR] Cannot" %windir%\logs\cbs\cbs.log|more
这将查看哪些文件已损坏。
看看它是否做了什么
findstr /c:"[SR] Repairing" %windir%\logs\cbs\cbs.log|more
Windows使用的小型文本文件经常出现误报,例如desktop.ini和settings.ini。同样由于更新.mof以wd开头的文件也可能被标记。忽略这些。