我继承了使用Visual Studio 2003和.NET 2.0构建的自定义应用程序。它使用Microsoft Office PIA版本11(用于Office 2003),它最初在Windows XP上运行。该应用程序依赖于读取Excel,Word和Powerpoint文件,以及Outlook读取.PST文件。使用Microsoft Office Interop v.11与Windows 7,Microsoft Office 2010的应用程序
现在我试图让此应用程序可以在具有Office 2010的64位Windows 7计算机上工作。大多数情况下,该应用程序的工作原理 - 正确读取.PST文件并上传电子邮件和附件(连同正确的元数据)到Sharepoint。只是在关闭应用程序并尝试打开Microsoft Office 2010产品(Word,Excel,Powerpoint,Outlook)后,这些程序往往会崩溃。错误信息会显示“Microsoft _ _已停止工作。”
望着事件查看器,日志通常是这样的:
Faulting application name: OUTLOOK.EXE, version: 14.0.6109.5005, time stamp: 0x4e79b881
Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7ba58
Exception code: 0xc0000005
Fault offset: 0x0002e3fb
Faulting process id: 0x1b20
Faulting application start time: 0x01cd5631d6ed41d9
Faulting application path: C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE
Faulting module path: C:\WINDOWS\SysWOW64\ntdll.dll
Report Id: 2f11010e-c226-11e1-8b8d-9cb70de93ccf
做大量的浏览之后,我猜它与应用程序中引用PIA 11版的Office 2003做的,而我在此计算机上安装的版本是Office 2010的PIA版本14.此外,我100%确定这是导致Office 2010应用程序崩溃的应用程序,因为每次运行旧应用程序时都会发生这种情况。重新启动计算机修复这些崩溃,但我宁愿不必每次运行此应用程序时重新启动!
实际上更新源代码的缺点,有什么我可以做的,以解决这个问题?
编辑:我现在有权访问Visual Studio Express 2010(C#),并使用Reflector有源代码文件。所以我想我可以开始进行代码更改。尽管如此,我仍然收到了很多错误,请参阅下面的回复...
这是一个办公室加载项(单独加载项的Outlook,单词等)?或者只是一个使用PIA的独立应用程序?您可以调试加载项并找出它失败的位置。你需要使用Visual Studio,并且可能是一个反编译和调试你没有源代码的第三方应用程序的工具(Reflector Pro可以做到这一点)。只需要试用。作为一种解决方法,在启动Word之前,您是否可以保留一个reg文件来禁用加载项(假设它是代码的附加部分,而不仅仅是一个使用interop的独立应用程序,导致崩溃)?有趣的是,重新启动'修复'崩溃... – JohnZaj