2008-10-20 64 views
1

我已经使用MS Visual Studio 2005在VB.NET中编写了一个应用程序。我正在使用.NET版本'2.0.50727'。直到最近,该应用程序运行没有错误。使用一段时间后,它开始产生一个System.Runtime.InteropServices.COMException error (80080005)。当我打电话来产生另一个外部应用程序的实例时,会发生错误。一旦发生这个错误,它永远不会消失,每次我的应用程序打开时都会发生。这个错误打破了我的程序的功能,因为它依赖于它所调用的第二个应用程序。VB.NET COMException错误

我不确定发生这种错误的原因是什么,但我知道它是用户特定的而不是应用程序。它似乎是在用户的Windows配置文件中发生的事情。我可以在同一台机器上使用不同的用户,或者为有问题的用户创建一个新的配置文件,程序在一段时间内无错误地工作。最终(在几周内),错误将会返回并保留,直到我再次解决它。 我想调试COM错误,以了解为什么会发生这种情况,但这是奇怪的行为,我不知道从哪里开始。我从来没有见过将自己连接到配置文件并导致其持久性的错误。

我没有很多.NET的经验,但我做了很多VB 6应用程序编程。请提供您的建议。非常感谢您的帮助。

这里就是发生错误的代码块:

Public Class frmMain 

Public btApp As BarTender.Application 

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

Try 

    btApp = New BarTender.Application 

Catch COMex As Runtime.InteropServices.COMException 

    MessageBox.Show("Error " + COMex.ErrorCode.ToString() + ": " + COMex.Message) 

End Try 

我在frmMain.vb形式的顶部(第一形式加载)声明变量。 加载第一个窗体时加载COM对象。我将它保持活动状态,直到应用程序关闭为止,因为我拨打了很多电话。

+0

你可以告诉你的代码和COMException异常吗?例外中至少应该有一个文本消息。 COMExecptions有很多原因。 – Jan 2008-10-20 16:04:53

回答

1

听起来像错误是安全相关的。它在一段时间后会奇迹般地发生在一个新用户身上,我会看看你的用户策略定义。密码是否在一段时间后过期?新用户是否具有根据您的应用程序使用情况填满的小临时目录(因此导致磁盘错误被屏蔽为COM异常)?什么是第三方应用程序?我们对这里的细节有所欠缺。但是这些都是需要开始考虑的事情。

+0

我要求的应用程序是Seagull Scientific的Bartender软件。这是一个标签打印应用程序。我们用它来运送标签。我不相信这是一个安全问题。你的临时目录想法值得追求。我怀疑这是造成这种情况的一个过程。 – user29635 2008-10-20 20:52:01