6

我们使用 COM 对象来访问 NT 服务中的 excel 电子表格(通过 Windows 脚本主机)。在 Vista 之前,这很好用,但从 Vista 开始,我们收到此错误:

Microsoft Office Excel 无法访问文件“c:\myfiles\test.xls”。有几个可能的原因:

  • 文件名或路径不存在。
  • 该文件正被另一个程序使用。
  • 您尝试保存的工作簿与当前打开的工作簿同名。

我尝试更改 NT 服务登录设置以使用我自己的帐户、管理员帐户和本地系统。我查看了本地安全策略,但没有找到任何东西。我花了几天时间搜索 Microsoft KB 无济于事。

如果脚本是从控制台应用程序执行的,它可以正常工作。该文件打开并处理没有问题。该错误仅在从服务的上下文中执行时发生。

如果该服务在 Windows XP 或 Server 2003 SP1 上运行,它也可以正常工作。只有在 Vista 上它才会失败(我们现在已经收到了在 Server 2003 SP2 中失败的报告)!

代码非常简单:

dim xl_app
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Open mypath,0,1

我怀疑这个人可能遇到了同样的问题: http://bytes.com/forum/thread819740.html

4

2 回答 2

1

只是一些进一步的问题:

  • 您使用的是哪个版本的 Excel?
  • 您是否尝试过以提升的权限运行服务?
于 2008-11-24T18:30:02.793 回答
0

我已经“有点”解决了这个问题。如果您使用“dcomcnfg”将启动 excel 应用程序的帐户更改为用户帐户或“交互式用户”,则从该服务启动的 excel 将在该帐户中启动,它现在可以访问文件系统。

问题是这是一个全局设置。如果您使用:*“此用户”:则 excel 始终以该用户打开,并且始终在会话 0 中打开时没有 UI,即使对于 excel 的交互式使用也是如此。IE它总是不可见的。*“交互式用户”:现在 excel 总是在交互式用户帐户中启动,我认为这不适用于将在启动时启动且没有交互式用户的服务。

必须对此进行一些安全设置。我希望其他人有其他想法。

于 2009-01-09T23:11:15.927 回答