生成word文档时检索COM类工厂的组件错误

时间:2009-07-27 21:06:12

标签: asp.net com ms-word

我正在尝试使用VB.NET编辑word文档,大部分是使用此代码:

如何从Visual Basic .NET自动化Word以创建新文档 http://support.microsoft.com/kb/316383

它在我的机器上工作正常,但是当我发布到服务器时,我收到以下错误。

  

检索COM类工厂   具有CLSID的组件   {000209FF-0000-0000-C000-000000000046}   由于以下错误而失败:   80070005

     

说明:期间发生了未处理的异常   执行当前的Web请求。   请查看堆栈跟踪了解更多信息   有关错误的信息和位置   它起源于代码。

     

异常详细信息: System.UnauthorizedAccessException:   检索COM类工厂   具有CLSID的组件   {000209FF-0000-0000-C000-000000000046}   由于以下错误而失败:   80070005

当我尝试创建一个单词应用程序对象时发生实际错误

 Dim oWord As New Word.Application

使用Visual Studio 2008和VB.NET 3.5。我引用了“Microsoft Word 10.0对象库”,我在bin目录中看到了Interop.Word.dll文件。

在开发计算机和Windows Server 2003上使用MS Office 2003

对.NET来说还是比较新的,并且对窗口服务器知之甚少,但“UnauthorizedAccessException”听起来像是一个权限问题。我想知道是否有人可以指出我正确的方向我可能需要做什么来让我的小应用程序访问使用word。

8 个答案:

答案 0 :(得分:7)

这听起来像是一个权限问题。您是否在Windows服务中运行代码?该服务通常作为本地系统运行,可能没有访问Word对象模型的权限。此外,如果word已经使用其他用户的凭据运行,那么您的程序可能无法使用不同的凭据通过COM访问它。办公室应用程序往往是单一实例,似乎加剧了这个问题。

答案 1 :(得分:1)

就我而言,Word正在服务帐户下运行Windows服务。

问题是C:\Windows\System32\config\systemprofile(或C:\Windows\SysWOW64\config\systemprofile)中不存在Desktop文件夹。

添加它解决了我的问题。

答案 2 :(得分:0)

听起来你可能在DCOM中有权限问题。尝试在DCOM配置中编辑Word权限。

答案 3 :(得分:0)

答案 4 :(得分:0)

我遇到了同样的问题,我发现的问题区域是“DCOM中Microsoft Word的安全配置”。在以下链接中,您可以找到有关如何配置的分步指南DCOM中的组件,为WORD重复这些步骤,您的问题将得到解决。

<强> http://www.biocompsystems.com/_public/DCOMConfigurationStepbyStepForXP.doc

谢谢, Sushil Jinder

答案 5 :(得分:0)

我在Windows 2008 R2上遇到了同样的问题。结束使用这篇文章: http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/65a355ce-49c1-47f1-8c12-d9cf5f23c53e

然后将web.config中的模拟身份用户更改为另一个用户来解决它。

我确信有一系列解决方案。

答案 6 :(得分:0)

转到开始 - &gt;运行
键入 regedit -32 ,然后按Enter键。
- 注册表编辑器将开放。
转到注册表 HKEY_CLASSES_ROOT \ Word.Application
选择 Word.Application 并为以下用户设置完全权限: -
管理员,管理员,本地服务,系统,服务,互动和用户。

答案 7 :(得分:0)

生成word文档时遇到了同样的问题。我通过检查任务管理器,并通过结束当前正在运行的进程WINWORD.EXE然后再次执行我的代码解决了这个问题。问题消失了。