[英]DCOM Failure of Office Automation
我开发了一个C#程序,它从SQL Server数据库中提取数据,然后生成包含数据的Word文档。 我已将程序设置为在Windows Server 2003框上作为SSIS作业的一部分运行。 该程序以用户SQLSVC运行,该用户没有管理权限。 当我以SQLSVC身份登录并运行程序时,它会正确执行。 但是,当程序作为SSIS作业自动运行时,它会冻结在以下代码行中
Microsoft.Office.Interop.Word.Application word =
new Microsoft.Office.Interop.Word.Application();
当我强行终止进程时,会生成以下错误消息。
Error Message: System.Runtime.InteropServices.COMException (0x80080005):
Retrieving the COM class factory for component
with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80080005.
at IepGlance.Program.CreateNewIepFiles(Dictionary`2
iepDictionary, EasyIepDataContext dbContext)
at IepGlance.Program.Main(String[] args)
据我所知,问题在于DCOM权限。 我已经使用dcomcnfg将所有可能的DCOM权限添加到用户SQLSVC,但这没有帮助。 还有其他可能的解决方案吗?
运行程序“dcomcnfg -32”。 (如果在64位下运行,则无法找到单词和excel组件)转到“控制台根目录/组件服务/计算机/我的电脑/ DCOM配置/”查找Microsoft Word和Excel并选择属性。 转到安全性并选择“配置权限”下的“自定义”。(如果需要,您可能还想更改其他权限,但我不需要)添加“IIS_IUSRS”并将其命名为“完全控制”。现在转到“身份”并选择“交互式用户”。
这取决于您是否在64位计算机上,如果您是32位Office或64位办公室,但在任何一种情况下,您都需要进入管理工具>组件服务,在DCOM配置下,您需要找到'Microsoft Word 97 - 2003 Document',然后将'identity'设置为运行应用程序池的用户。 或者只是禁用它的安全性。
如果您运行的是具有32位Office的64位服务器,则可能无法找到此DCOM设置。 您需要从命令提示符运行“MMC -32”以启动32位MMC,然后从“文件”>“添加/删除管理单元”菜单中添加“组件服务”。
希望这有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.