昨天,组里一个小朋友告诉我,他写的报表生成服务中无法打开一个已经存在的Excel 2007文件,他的开发环境是Win7、Visual Studio .Net 2008(Windows Server 2008下同样存在此问题)。比较奇怪的是,Excel Automation对象是可以实例化的,但是在执行Workbooks.Open时抛出异常如下:

Microsoft Office Excel 不能访问文件“a.xls”。 可能的原因有:

• 文件名称或路径不存在。 • 文件正被其他程序使用。 • 您正要保存的工作簿与当前打开的工作簿同名。_Microsoft Office Excel_   在 TemplateExcelFileExporter.Create(DataSet ds, String fullName) 位置 E:\Demos\ExportService\ExportService\Class1.cs:行号 263    在 ExportService.Service1.OnStart(String[] args) 位置 E:\Demos\ExportService\ExportService\Service1.cs:行号 30

事实上,a.xls文件是存在的,而同样的代码在非Service程序是正常的,且Service部署到Windows Server 2003上运行正常。我不得不怀疑是权限问题,服务是以Local System运行的,在给工作目录加上了相应的权限后发现问题依旧。无奈,上网去转了一圈,找到了一个解决方案,以下是其中关键的部分:

This solution is ...

・Windows 2008 Server x64   Please make this folder.

C:\Windows\SysWOW64\config\systemprofile\Desktop

・Windows 2008 Server x86

Please make this folder.

C:\Windows\System32\config\systemprofile\Desktop

...instead of dcomcnfg.exe.

This operation took away office automation problems in my system.

A Desktop folder seems to be necessary in the systemprofile folder to open file by Excel.

It disappears from Windows2008, Windows2003 had the folder, and I think it cause this error.

虽然问题解决了,但是为什么在X:\Windows\System32\config\systemprofile目录下创建名为Desktop目录即可解决问题,这个还不是很清楚。继续查了一些资料,应该还是权限的问题,因为无论Windows Service运行在哪个帐号下,它所创建的文件的Owner都是Administrator,因此Excel无法打开此文件。但为啥一定要建一个空的Desktop目录,仍未找到答案。如果哪位高价知道,请不吝赐教。

源文地址:http://www.cnblogs.com/TonyJoule/archive/2010/05/18/1737973.html

[转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案的更多相关文章

  1. Windows Server 2008 下ASP程序连接ORACLE数据库驱动错误

    今天开发那边升级.改造系统过程中,在测试服务器碰到关于ASP程序连接ORACLE数据库的小问题,虽然是小问题,但是整起来真要命啊,花了不少时间,主要是ASP程序啊,这种上古神器,哥还是当年毕业的时候弄 ...

  2. Windows server 2008下开启telnet功能

    今天在windows server 2008 R2下使用telnet 来测试端口是否可以连接,结果发现如下错误:

  3. DB2 Enterprise Server Edition(DB2 ESE)9.1在Windows Server 2008 下出现无法新建数据库的情况,及解决办法

    在安装有,DB2 9.1版本的Windows Server 2008 上面,使用默认的安装方式导致无法创建数据库,相关的错误提示: "SQL3012C 发生系统错误(原因码= "& ...

  4. Windows Server 2008 下解析二级域名的方法

    昨天去了客户那里部署网站,用的是客户那边的windows server 2008. 本文主要以总结问题点的形式来说. 问题1:本机的数据库是SQL SERVER 2008R2,客户那边的数据库是SQL ...

  5. Windows Server 2008下asp+access无法登陆问题总结

    今日把一套陈旧的企业办公平台部署至公司新采购的服务器,因为在本机windows7环境已经反复测试通过.本以为分分钟完成的事情,结果折腾了我2天.服务器系统:windows server 2008 r2 ...

  6. Windows server 2008 下iis7 架设ftp服务器

    架设了一天的ftp服务器,终于搞定了. 按着windows server 2003的思路在windows server 2008把ftp设置好后,登录过程老是出现:530 User cannot lo ...

  7. Windows Server 2008下的FTP服务器设置

    今天刚在新服务器上部署好Windows Server 2008,同时安装好了SQL,基本上还算顺利.没想到在设置FTP服务器的时候遇到了麻烦.按照以往的经验,安装好Serv-U以后,同时在防火墙设置里 ...

  8. 适用于 Windows 7 SP1、Windows Server 2008 R2 SP1 和 Windows Server 2008 SP2 的 .NET Framework 4.5.2 仅安全更新说明:2017 年 9 月 12 日

    https://support.microsoft.com/zh-cn/help/4040960/description-of-the-security-only-update-for-the-net ...

  9. windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件

    windows server 2008 安装WinCE的同步软件,须要安装Microsoft ActiveSync 6.1版本号的. 而不能安装ActiveSync|Microsoft ActiveS ...

随机推荐

  1. 微信网页授权java实现

    功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能.     开发前的准备: 1.需 ...

  2. WPF的重要新概念

    原文 http://www.cnblogs.com/free722/archive/2011/11/12/2238654.html 逻辑树与可视树 XAML天生就是用来呈现用户界面的,这是由于它具有层 ...

  3. Protection 5 ---- Priviliege Level Checking 2

    CPU不仅仅在程序访问数据段和堆栈段的时候进行权限级别检查,当程序控制权转换的时候也会进行权限级别检查.程序控制权转换的情况很多,各种情况下检查的方式以及涉及到的检查项都是不同的.这篇文章主要描述了各 ...

  4. 调试qemu

    最近需要给libvirt增加一个新feature,该feature基于qemu的最新代码. 我需要关心的: http://wiki.qemu.org/Features/Migration 需要自己编译 ...

  5. centos6.5 openvpn安装配置

    http://m.jb51.net/?host=www.jb51.net&src=http%3A%2F%2Fwww.jb51.net%2Fsoftjc%2F150885.html

  6. powerdesigner for sqlserver的一些实用配置

    在实用powerdesigner生成sqlserver 数据表时常常遇到一些问题: 1.数据中定义的字段名称相同生成物理模型时会报错. 2.数据各表之间的主键不能定义一样的名称. 我现在的需求是将数据 ...

  7. css首行缩进两个字符串

    text-indent:2em; 这个属性就可以缩进,但是2em不确定是什么意思:抽空总结一下

  8. Redis数据结构及相应的命令

    Redis可以存储键(key)与5种不同类型值(value)之间的映射,5中不同类型的值分别为字符串(string),列表(list),散列(hash),集合(set)和有序集合(sorted set ...

  9. codeigniter使用mongodb/redis

    ci2.x版本,使用mongodb,需要安装pecl-php-mongo扩展(github上很多扩展已不可用,找到个可用版本纪录于此),添加到php.ini中 使用如下 public function ...

  10. VB6关于判断模态窗体的问题

    模态窗体也有人叫模式窗体,是否为模态窗体由Show方法的参数决定: 语法 object.Show style, ownerform Show 方法的语法包含下列部分: 部分 描述 object 可选的 ...