3

我有一个运行的 Windows 服务,Excel Interop以便自动执行各种宏。但是,当我尝试运行一个使用 Windows 身份验证访问数据库的宏时,我遇到了一个特殊的问题......

如果宏通过 Windows 服务运行,则打开工作簿并开始执行宏,但应用程序挂起(可能在数据访问部分)。

但是,如果宏通过 Visual Studio 调试器运行,使用与服务相同的实现(它们调用相同的类库),它会执行、保存工作簿并按预期关闭。

我确定这与模仿有关,但我似乎无法弄清楚。我在我的用户下运行了 windows 服务,并且我还修改了组件服务中的默认 COM 属性,Impersonate而不是默认的Identify.

任何帮助将不胜感激,因为它最好作为 Windows 服务而不是控制台应用程序运行。

4

1 回答 1

5

也许我来晚了,但无论如何我都走了:

我有一个类似的问题,并通过在和中创建一个Desktop文件夹来解决它。C:\Windows\SysWOW64\config\systemprofileC:\Windows\System32\config\systemprofile

在 Windows 服务中使用时,Excel 似乎无法在特定用户下运行。因此,它使用 LocalSystem 服务帐户运行,并且它需要一个桌面文件夹才能与 Excel 互操作进行交互。

我没有进一步的解释,但它对我有用,并且没有引起任何其他已知问题。我为明确的答案搜索了很多,但我发现的所有内容都描述了解决方案,但没有说明原因。

于 2013-10-07T19:16:30.073 回答