1

这个问题是我目前处理的最头疼的问题。

我有一个 VB6 应用程序,它接收我几年前从它的原始开发人员那里继承的外部数据馈送。它在远程服务器上运行,可以正常运行一个月左右,然后每次启动时突然崩溃。发生这种情况时,我查看事件查看器并看到 oleaut32.dll 出现“故障”。我发现的解决方法是重新注册 dll。然后应用程序启动并运行没有问题。但是,不可避免地,整个问题会在几个月后再次出现。

我所做的研究表明,有许多问题可能会导致这种情况(恶意软件、补丁等),但是当这个应用程序再次失败时,每隔几个月就会在家里打电话给我,这变得陈旧而令人厌烦。

关于如何缓解此类问题的任何想法?

我很想用更高级的语言重新编写应用程序,但由于许多商业原因,现在这不可行。

4

1 回答 1

3

VB6 是一种高级语言。很多人向我们Basic人寻求帮助,但在这样做的时候却渣了我们的语言。

在任务计划程序中,设置在生成该事件消息时运行的任务。

所以在一个批处理文件中

regsvr32 oleaut32
"c:\some folder\your vb6 program.exe"

但始终包含完整的错误消息。这对我来说可能意味着什么。

我还将测试该服务器的硬件故障。

查看修复是否可用

在控制面板(并在左侧窗格中选择经典视图)中选择问题报告和解决方案(在开始的搜索框中输入问题),转到问题历史记录,右键单击您的错误并选择检查解决方案。您也可以右键单击并选择详细信息以获取更多信息。在此处发布这些详细信息。

查看最近的系统更改是否导致它

在控制面板(并在左侧窗格中选择经典视图)中选择管理工具,然后选择可靠性和性能监视器,然后选择监控工具,然后选择可靠性监视器(在开始搜索中键入可靠性)。此列表是按日期列出的软件安装、卸载、Windows 更新和崩溃的图表(向左滚动可查看更早的日期)。查看安装或卸载某些内容后是否开始发生崩溃。

标准硬件故障排除

首先让我们测试一下我们可以使用什么硬件。硬件故障可以出现很多软件故障,因此我们需要先测试硬件。

请按顺序执行以下操作。内存故障会导致磁盘损坏,磁盘故障会导致磁盘损坏。磁盘损坏会导致文件损坏(SFC 可能能够修复)。如果您遇到硬件错误,请停止并回发。不要在内存有问题的情况下运行 chkdsk。

内存诊断 如果您尚未运行内存诊断,请执行此操作。单击开始 - 控制面板 - 在左侧窗格中选择经典视图 - 选择管理工具 - 然后选择内存诊断工具。

SMART 开始 - 所有程序 - 附件 - 右键单击​​命令提示符并选择以管理员身份运行。键入(或通过右键单击命令提示符窗口并选择粘贴来复制和粘贴)。

Windows 中的磁盘驱动器会自行监控即将发生的故障。该功能称为 SMART 它将在 30% 的时间内检测到即将发生的故障。在提升的命令提示符类型中(它是一行)

wmic /namespace:\\root\wmi PATH MSStorageDriver_FailurePredictStatus get active,predictfailure,reason /format:List

如果它处于活动状态,则为真,如果未打开,则在计算机的 BIOS 中将其打开。

如果一切正常,Predict Failure 应该为 False。有两个原因。

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 位 Windows https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=19792

对于内存诊断结果 ,单击开始 - 控制面板(并在左侧窗格中选择经典视图)选择​​管理工具,然后选择事件查看器,然后查看事件查看器(本地)-应用程序和服务-Microsoft-Windows-MemoryDiagnostic-Results 条目。

查找 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

双击该条目以获取有关该条目的详细信息。

PS 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)经常出现误报。此外,由于更新,以 wd 开头的 .mof 文件也可能被标记。忽略这些。

于 2014-10-10T18:36:48.923 回答