Server2008 R2 中拒绝访问 ProgID: "excel.application"及配置Microsoft Excel Application权限解决方案
2015-06-26 15:20
567 查看
如果按照
http://blog.csdn.net/kongwei521/article/details/43699503
[b][b]/article/2448818.html[/b][/b]
两个链接里面都无法解决的话
采用终极办法
C:\Windows\SysWOW64\config\systemprofile\Desktop 64位系统
C:\Windows\System32\config\systemprofile\Desktop 32位系统
目录设置为Everyone和NetWorkSerices 等等 权限即可。
相关可参考
http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91 http://yeppfly.blog.51cto.com/405635/964304
【
Working config: Microsoft Excel Enterprise 2007 + Windows Server 2008 x64 edition + .NET 4.0 web application
Server Error in '/excel' Application.
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005.
This error is basically saying that the IIS / ASP.NET framework does not have permission under its current user to run/access COM Objects.
Following the instructions here http://www.computerperformance.co.uk/Logon/code/code_80070005.htm Led me to a solution. Using DCOMCNFG you can set COM permissions. However, instead of just setting COM permissions on the 'Microsoft Excel Application', I needed to set permissions for the
entire computer. The linked article has you setting permissions for 'Everyone' but that's not necessary. You only need to set permissions for NETWORK SERVICE user.
Originally, I had followed the steps located here: http://blog.crowe.co.nz/archive/2006/03/02/589.aspx ... those steps have you set permissions to NETWORK SERVICE but only on the Excel Application. For some reason, that wasn't enough on my environment, I needed to set it on the entire 'My Computer' and
not the individual app.
OK, so I set up permissions, but then I was getting a totally different error, one that didn't jive at all:
“Microsoft Office Excel cannot open or save any more documents because there is not enough available memory or disk space.
• To make more memory available, close workbooks or programs you no longer need.
• To free disk space, delete files you no longer need from the disk you are saving to.”
This is of course false. My machine had plenty of space. So what gives?
This is the hardest part to grok, IMHO. This error will NOT occur in Windows Server 2008 32 bit edition (x86). Why not? Because the Folder Structure is different for a user in x64 edition. Excel, when opened, actually tries to create some temporary files
or other data when it loads. If it does not have the ability to write to the disk (either because the disk is actually full, or in our case, because that folder is not something we can write to due to security setup), then the disk error is the default message
shuttled back to the user. Here are the write locations
C:\Windows\SysWOW64\config\systemprofile\Desktop (x64, does not exist by default)
C:\Windows\System32\config\systemprofile\Desktop (x86, exists by default and is writeable)
http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91
has more on this issue. Basically, to get this to work, take two steps: Create C:\Windows\SysWOW64\config\systemprofile\Desktop and give C:\Windows\SysWOW64\config\systemprofile folder write access to 'Everyone'. This will allow excel to proceed past this
error and hopefully start automating files for you.
Finally, I was getting one last error after doing this step:
Service cannot be started. System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel cannot access the file 'c:\temp\test.xls'. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
This is because the folder I was trying to write to was not allowed full-control rights by NETWORK SERVICE. If you app writes excel files to a directory, that directory must be full-control permissioned to NETWORK SERVICE.
ONE OTHER THING: If you are running an OFFICE TRIAL VERSION and you have not entered a license key, your app might hang and never load anything. This is because the COM Object actually spawns a modal dialog for a license key and your code will wait there
for a user who will never come to add a license key. So, be sure if you're automating excel that you ONLY using a registered version and not a 30 day trial or unlicensed version.
】
http://blog.csdn.net/kongwei521/article/details/43699503
[b][b]/article/2448818.html[/b][/b]
两个链接里面都无法解决的话
采用终极办法
C:\Windows\SysWOW64\config\systemprofile\Desktop 64位系统
C:\Windows\System32\config\systemprofile\Desktop 32位系统
目录设置为Everyone和NetWorkSerices 等等 权限即可。
相关可参考
http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91 http://yeppfly.blog.51cto.com/405635/964304
【
Working config: Microsoft Excel Enterprise 2007 + Windows Server 2008 x64 edition + .NET 4.0 web application
Server Error in '/excel' Application.
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005.
This error is basically saying that the IIS / ASP.NET framework does not have permission under its current user to run/access COM Objects.
Following the instructions here http://www.computerperformance.co.uk/Logon/code/code_80070005.htm Led me to a solution. Using DCOMCNFG you can set COM permissions. However, instead of just setting COM permissions on the 'Microsoft Excel Application', I needed to set permissions for the
entire computer. The linked article has you setting permissions for 'Everyone' but that's not necessary. You only need to set permissions for NETWORK SERVICE user.
Originally, I had followed the steps located here: http://blog.crowe.co.nz/archive/2006/03/02/589.aspx ... those steps have you set permissions to NETWORK SERVICE but only on the Excel Application. For some reason, that wasn't enough on my environment, I needed to set it on the entire 'My Computer' and
not the individual app.
OK, so I set up permissions, but then I was getting a totally different error, one that didn't jive at all:
“Microsoft Office Excel cannot open or save any more documents because there is not enough available memory or disk space.
• To make more memory available, close workbooks or programs you no longer need.
• To free disk space, delete files you no longer need from the disk you are saving to.”
This is of course false. My machine had plenty of space. So what gives?
This is the hardest part to grok, IMHO. This error will NOT occur in Windows Server 2008 32 bit edition (x86). Why not? Because the Folder Structure is different for a user in x64 edition. Excel, when opened, actually tries to create some temporary files
or other data when it loads. If it does not have the ability to write to the disk (either because the disk is actually full, or in our case, because that folder is not something we can write to due to security setup), then the disk error is the default message
shuttled back to the user. Here are the write locations
C:\Windows\SysWOW64\config\systemprofile\Desktop (x64, does not exist by default)
C:\Windows\System32\config\systemprofile\Desktop (x86, exists by default and is writeable)
http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91
has more on this issue. Basically, to get this to work, take two steps: Create C:\Windows\SysWOW64\config\systemprofile\Desktop and give C:\Windows\SysWOW64\config\systemprofile folder write access to 'Everyone'. This will allow excel to proceed past this
error and hopefully start automating files for you.
Finally, I was getting one last error after doing this step:
Service cannot be started. System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel cannot access the file 'c:\temp\test.xls'. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
This is because the folder I was trying to write to was not allowed full-control rights by NETWORK SERVICE. If you app writes excel files to a directory, that directory must be full-control permissioned to NETWORK SERVICE.
ONE OTHER THING: If you are running an OFFICE TRIAL VERSION and you have not entered a license key, your app might hang and never load anything. This is because the COM Object actually spawns a modal dialog for a license key and your code will wait there
for a user who will never come to add a license key. So, be sure if you're automating excel that you ONLY using a registered version and not a 30 day trial or unlicensed version.
】
相关文章推荐
- android平台led开发之内核硬件驱动层(一)
- Android单元测试
- WebSphere Application Server 动态高速缓存技术教程
- Unity3d陀螺仪看全景图
- iOS解决两个静态库的冲突 duplicate symbol
- Unity NGui 利用UIToggle做个分页标签
- 【iOS开发系列】微信支付
- Unity NGui 利用UIToggle做个分页标签
- 【Android笔记】Android控件可见与不可见详解
- iOS 在TabViewController中的一个ViewController跳转到另一种ViewController
- 仿微信输入支付密码的弹窗
- 防止反编译所用到的proguard.cfg文件的编写
- Xcode6.3中的各个iOS工程模板介绍
- Android可记住用户密码登陆界面
- undefined reference to '__android_log_print'(android studio1.3版本)
- Android: 关于百度地图缩放级别
- vs+BSDSocket+cocos2d-x+lua游戏开发
- Android service学习总结和利用service实现的后台音乐播放功能
- Android 第三方
- [原]Android学习之 Activity堆栈管理与控制