Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Excel组件可以从应用程序工作,但不能从Windows服务工作_C#_.net_Excel_Com_Atl - Fatal编程技术网

C# 使用Excel组件可以从应用程序工作,但不能从Windows服务工作

C# 使用Excel组件可以从应用程序工作,但不能从Windows服务工作,c#,.net,excel,com,atl,C#,.net,Excel,Com,Atl,我有一个.NET Windows服务,它自己托管一个WCF服务。然后,该WCF服务继续调用VisualStudio6上用ATL编写的旧COM组件。然后,此COM组件将创建一个Excel.Application COM组件。它在此Excel COM组件上调用各种方法,然后在此组件上调用SaveAs以完成文档的保存。此SaveAs方法调用失败。Windows服务作为本地系统运行,所以我认为这一定是权限问题。因此,我更改了windows服务,使其在我的用户帐户下运行(只需进入services.msc,

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

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


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

因为Vista Windows服务不允许做“桌面事情”(安全等)。。。此外,办公自动化是

您可以找到一些方法来规避所有这些,但我强烈建议您采取另一种方式—对于Office文件,您可以使用MS提供的免费SDK—您可以下载它


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

当您在WinForms测试应用程序中进入“另存为…”时,是否会出现“另存为…”对话框窗口?您能否比呼叫失败更具体一些?你怎么知道它失败了,错误信息是什么,它是如何表现出来的?谢谢。当我确信它以前在XP上运行时,我无法理解它为什么会失败。(现在在Windows7上)。