积极答复者
windows server 2008中读取Microsoft Excel Application COM组件

问题
-
64位Windows Server 2008操作系统的服务器读取Excel档案。
开始使用Provider=Microsoft.ACE.OLEDB.12.0引擎,无法操作,经查证Microsoft没有提供64的AccessDatabaseEngine引擎。
后来改用如下方式读取excel档案:
using Excel = System.Microsoft.Office.Interop.Excel;
Excel.Application xApp = new Excel.ApplicationClass();
通过该种方式读取Excel档案时,提示Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005
根据以往经验以及爬网结果:
1. Windows Server 2003对COM组建Microsoft Excel Application进行用户NETWORK SERVICE的权限设置
2. Windows XP对COM组建Microsoft Excel Application进行用户ASPNET的权限设置
已经能够测试在32位Windows Server 2003中此种设置正确,
但是在64位Windows Server 2008的WEB服务器中同样的设置无法解决该问题。
同时,还进行了如下操作实验:
1. C:/Program File(x86)/Office文件夹赋予NETWORK SERVICE用户完全控制权限
2. 对上述文件夹以及Microsoft Excel Application COM组建赋予NETWORK SERVICE、Everyone、IUSER_机器名、IWAM_机器名等户用控制激活权限
以上均以失败告终。
此种问题,在64位Windows Server 2008的服务器中该如何处理!!请大侠指教。
答案
-
参考:
1. http://forums.asp.net/t/1303594.aspx
2. http://social.technet.microsoft.com/Forums/en-US/office2007deploymentcompatibility/thread/334c9f30-4e27-4904-9e71-abfc65975e23?prof=required registry hack, 修改注册表
3. http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required Window Station概念和创建Desktop文件夹
网站的运行帐号是在应用程序池中的标识中设定的,一般为内置帐户Network Service,用户登录运行程序与Window Station和Desktop有关。
当运行于Network Service帐户,根据后二个链接中的方法:
1. registry hack,修改注册表
2. 在C:\Windows\SysWOW64\config\systemprofile\下创建Desktop文件夹
都没有解决我的问题。
通过System.Security.Principal.WindowsIdentity.GetCurrent().Name发现,当程式运行于IIS中,通过工作管理员查看进程的启动帐户是应用程序池标识帐户(一般为Network Service),当程序在Visual Studio 2008中运行于ASP.NET的启动帐户是系统登录帐户(一般为Administrator)。
既然无法厘清Network Service的Wondow Station与Desktop的关系,就设置了应用程序池的标识帐户为自定义帐户:一个隶属于管理员组的帐户Admin1。
也可设置应用程序池的标识帐户为内置帐户并选择LocalSystem帐户。
测试已经能正常运行!
- 已标记为答案 宋翔Moderator 2010年10月1日 9:17
全部回复
-
参考:
1. http://forums.asp.net/t/1303594.aspx
2. http://social.technet.microsoft.com/Forums/en-US/office2007deploymentcompatibility/thread/334c9f30-4e27-4904-9e71-abfc65975e23?prof=required registry hack, 修改注册表
3. http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required Window Station概念和创建Desktop文件夹
网站的运行帐号是在应用程序池中的标识中设定的,一般为内置帐户Network Service,用户登录运行程序与Window Station和Desktop有关。
当运行于Network Service帐户,根据后二个链接中的方法:
1. registry hack,修改注册表
2. 在C:\Windows\SysWOW64\config\systemprofile\下创建Desktop文件夹
都没有解决我的问题。
通过System.Security.Principal.WindowsIdentity.GetCurrent().Name发现,当程式运行于IIS中,通过工作管理员查看进程的启动帐户是应用程序池标识帐户(一般为Network Service),当程序在Visual Studio 2008中运行于ASP.NET的启动帐户是系统登录帐户(一般为Administrator)。
既然无法厘清Network Service的Wondow Station与Desktop的关系,就设置了应用程序池的标识帐户为自定义帐户:一个隶属于管理员组的帐户Admin1。
也可设置应用程序池的标识帐户为内置帐户并选择LocalSystem帐户。
测试已经能正常运行!
- 已标记为答案 宋翔Moderator 2010年10月1日 9:17