2009-07-27 30 views
8

我试图从编辑VB.NET使用大部分的代码Word文档:检索COM类工厂组件的错误而产生的word文档

如何从Visual Basic .NET使Word自动运行创建一个新的文件 http://support.microsoft.com/kb/316383

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

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

实际的错误,当我尝试只创建一个Word应用程序对象

Dim oWord As New Word.Application 

使用Visual Studio 2008和VB.NET 3.5发生。我参考了“Microsoft Word 10.0 Object Library”,并在bin目录中看到了Interop.Word.dll文件。

开发计算机和Windows Server 2003

还是相当新的.NET和没有关于窗口服务器多少知识,而是出现“UnauthorizedAccessException”关于使用MS Office 2003的听起来像一个权限问题。我想知道如果有人能指出我正确的方向,我可能需要做的是让我的小应用程序访问使用word。

回答

7

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

+0

有趣的是,当我登录到系统并运行Word时,它运行安装程序。我猜这个用户之前没有人跑过这个词。它并没有解决我的问题,但我甚至怀疑即使没有许可问题,如果这将阻止它的工作。 没有我的代码是一个Web应用程序。虽然这是一个很少使用的小应用程序,但我从来没有考虑过如果两个人同时尝试运行它,会发生什么情况。感谢那些意见。 有没有办法查看其他人是否正在访问COM对象?我很确定没有别的,但我甚至不知道在哪里检查。 – TheDPQ 2009-07-27 21:42:53

+0

Web应用程序以用户身份运行?例如,在IIS 7中,应用程序池将作为本地系统运行,这可能会有相同的问题。 – 2009-07-27 22:14:00

0

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

0

转到开始 - >运行
注册表编辑器-32,然后按回车键。
- 注册表编辑器将会打开。
转到注册表HKEY_CLASSES_ROOT \ Word.Application
选择Word.Application并设置全权限如下用户: -
管理员,管理员,本地服务,系统,服务,互动和用户。

1

就我而言,Word通过服务帐户下的Windows服务运行。

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

添加它解决了我的问题。

0

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

相关问题