4

我编写了一个应用程序来监视文件夹,每当将 PowerPoint 文档放入其中时,它都会遍历其中的幻灯片并生成每张幻灯片的 png 图像。这在 Windows 窗体应用程序中运行良好,但我在 Windows 服务中放置了完全相同的代码,使用了相同的测试文件,但无法打开它并出现以下错误:

错误:PowerPoint 无法打开文件。在 Microsoft.Office.Interop.PowerPoint.Presentations.Open(字符串文件名,MsoTriState 只读,MsoTriState 无标题,MsoTriState WithWindow)-2147467259 Com 错误

我已将服务设置为使用我自己的用户帐户(具有管理员权限)运行,因此我认为这将排除权限问题,但我想不出其他任何尝试。

有什么建议么?

4

4 回答 4

4

一个名叫“Gary McGill”的人发布了一个对我来说效果很好的解决方案(在一个非常相似的问题上):

通过 Server 2008 上的 Windows 服务实现 Office 自动化

像魅力一样工作(我什至不必检查“登录”选项卡上的“允许服务与桌面交互”复选框)

于 2010-07-15T16:20:20.240 回答
1

如果没有更多信息,就无法判断问题所在。它可以是任何数量的东西。如果操作系统是 XP 或更早版本,则在服务运行时不会加载用户的配置文件,因此 PP 可能无法访问它需要的某些信息。PP 可能正在尝试一些复杂的操作,假设它处于交互式会话中。由于缺少用户配置文件,PP 使用的 COM 组件可能无法初始化。真正的错误甚至可能不是安全问题,开发人员使用 ERROR_ACCESS_DENIED 或 ERROR_OUT_OF_MEMORY 来捕获所有意外错误的情况并不少见。

但真正的问题是 PowerPoint 在很大程度上是一个用户登陆应用程序——它不应该在服务中使用。将服务设置为与桌面交互是一个糟糕的解决方案。即使它确实有效,它也只会掩盖更深层次的问题,并使其作为服务运行变得毫无意义。有许多实用程序和组件可用于将 PowerPoint 幻灯片转换为图像文件。在 Google 上进行快速搜索会返回许多看起来更适合在服务中使用的可能性,而且其中大多数都很便宜。

于 2009-04-08T17:35:37.517 回答
1
  • 进入组件服务>计算机>我的电脑>DCOM 配置。
  • 转到“Microsoft PowerPoint 幻灯片”DCOM 并选择属性。
  • 转到身份选项卡并将用户从被继承更改为具有网络服务/访问权限的特定用户。

PowerPoint 互操作不应该尝试打开 UI,但这也可能是问题所在。

于 2011-08-25T10:20:53.700 回答
0

尝试将服务设置为与桌面交互。

于 2009-04-08T12:01:34.310 回答