当Outlook在另一个帐户下运行时,Outlook 2010上的CreateObject在Outlook 2010上失败

时间:2015-01-16 15:29:44

标签: com vb6 outlook-2010

我遇到的问题已在Getting/Creating an Outlook Application in Windows 7中描述,但我很难确定问题的根源,因为我恰好维护一个旧的VB6应用程序,以及错误来自VB6应用程序的报告在该文章中未提及。此外,我正在寻找更好的解决方案。

问题是CreateObject("Outlook.Application")GetObject(,"Outlook.Application")失败,错误429 - ActiveX组件无法创建对象,尤其是在Windows 7上。问题的根源是,如果Outlook是已经在普通用户帐户下运行并且应用程序以管理员身份运行(对于在Windows 7上运行的旧32位应用程序而言闻所未闻)想要访问Outlook,对Outlook COM接口的请求会挂起30秒然后失败。这似乎与所请求的Outlook实例和已经运行的Outlook实例使用不同的用户帐户或权限有关。

首先,如果可以报告更好的错误,并且可以更快地报告,那将是很好的。通常,应用程序会在报告错误之前挂起30秒。所以第一个问题是,有没有办法在没有等待30秒的情况下检测到这种情况?

接下来,有没有办法解决此错误,因此当我们想要访问Outlook API时,我们不必关心Outlook可能已在不同的凭据下运行?一种想法是关闭UAC,以便旧的32位应用程序不太可能需要以管理员身份运行。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我认为你已经解决了这个问题,但为了以防万一,我有同样的问题,我的解决方案是用API终止procces outlook.exe,然后执行“CreateObject”

你可以做下一步:         如果err.number = 429那么         terminateprocces(“outlook.exe”)'你可以在intenet上找到功能代码         恢复         结束如果

答案 1 :(得分:0)

我通过在本地安装VB6应用程序而不是在网络驱动器上解决了这个问题。 在快捷方式属性中取消选中“以管理员身份运行”可能有所帮助。