c# - 从 Vista 上的 NT 服务运行时,从 Excel COM 对象访问文件失败

标签 c# .net com windows-vista vbscript

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

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

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

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

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

如果该服务在 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

最佳答案

只是一些进一步的问题:

  • 您使用的是哪个版本的 Excel?
  • 您是否尝试过以提升的权限运行该服务?

关于c# - 从 Vista 上的 NT 服务运行时,从 Excel COM 对象访问文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/292150/

相关文章:

c# - 在运行时生成报告

c# - 是否可以使 FolderBrowserDialog 的默认路径显示在库中而不是实际磁盘中?

visual-studio - 当/u arg 不起作用时,如何取消注册最初使用 RegSvr32 添加的 COM dll?

f# - 从 F# 脚本使用 COM

c# - 删除用户的声明

c# - C# 代码背后的数据绑定(bind)

c# - 我可以从 Web API 访问 IIdentity

.net - 如何使用静态成员创建.NET接口(interface)?

java - 自动定位客户的服务器

c# - 从 C# 调用 MATLAB 函数