使用Excel组件从应用程序但不是Windows服务

时间:2011-09-06 13:29:18

标签: c# .net excel com atl

我有一个.NET Windows服务,它自己托管一个WCF服务。然后,此WCF服务继续在Visual Studio 6上调用在ATL中编写的旧COM组件。然后,此COM组件将创建Excel.Application COM组件。它在此Excel COM组件上调用各种方法,然后在其上调用SaveAs以完成保存文档。此SaveAs方法调用失败。 Windows服务作为本地系统运行,所以我认为它必须是一些权限问题。所以我更改了Windows服务,以便它在我的用户帐户下运行(只需进入services.msc,停止服务,属性,更改登录,然后重新启动服务)。但是,同样的问题仍然存在。

我创建了一个快速的.NET Win Forms测试应用程序,然后从那里运行COM组件。这很好用。该应用程序在我的用户帐户下运行,所以我认为在我的帐户下运行Windows服务会产生同样的效果。

Windows服务有什么问题(即使它在我的用户帐户下运行)?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于Vista Windows服务不允许执行“桌面内容”(安全等)...另外Office自动化是NOT supported by MS in this scenario ...

你可以找到一些方法来规避所有这些但我强烈建议采取另一种方式 - 对于Office文件,有一个免费的SDK,你可以使用名为OpenXML SDK 2.0的MS - 你可以下载它{{3} }。

如果功能不够,还有其他免费和商业SDK - 推荐一些有助于更多了解您需求的内容。