我有一个Windows 2016服务器,我已经安装并激活了Office 2013 64位。
我有一个典型的ASP应用程序,试图像这样打开Excel工作簿:
<%
Set appExcel = CreateObject("Excel.Application")
appExcel.Workbooks.Open("C:\intranet\web\Libro1.xlsx")
%>我知道微软不鼓励这种办公自动化,但这是一个我继承下来的遗留应用程序,我必须设法让它在Windows 2016上运行。
如果我以VBS脚本的形式执行这段代码,就没有问题,但是如果我尝试将其作为ASP页面执行,则会得到:
错误“800a03ec”无法访问文件'C:\intranet\web\Libro1.xlsx‘。 有几个可能的原因: 文件名或路径不存在。 该文件正被另一个程序使用。(...)
我已经放弃了所有建议的理由,我还检查了如果我真的使用了一个不存在的文件,错误信息是不同的。
我正在以用户"Administrator“的身份运行我的ASP应用程序池(在我的西班牙语安装中管理)。
在组件服务中Microsoft配置条目的所有三个部分中,我都为每个人提供了权限。
我已经检查了我的操作系统和办公包中安装的更新。
我的想法不多了,任何合理的线索都欢迎。
发布于 2017-03-27 23:59:54
关于在IIS中设置网站的建议
建立IIS网站时应考虑的事项
建立匿名帐户
ApplicationPoolIdentity而不是IUSR
ApplicationPoolIdentity是IIS_IUSRS安全组中对应的IIS AppPool\<AppPoolAccounts>之一的特殊术语。原因是它将安全上下文与应用程序池联系在一起,而不是让匿名帐户以IUSR的形式运行,而将应用程序池作为ApplicationPoolIdentity运行,留下两个安全上下文来管理。
ApplicationPoolIdentity。借用方法一,匿名帐户应该设置为ApplicationPoolIdentity,因此现在只有一个安全上下文需要管理。
与使用IUSR相比,这种方法的主要好处是您知道自定义帐户的密码,而IIS控制IUSR密码使使用它代替ApplicationPoolIdentity作为应用程序池标识很麻烦。分配NTFS权限
警告: UAC (用户帐户控制)在"Admin Approval Mode“中运行时可以修改NTFS权限,确保在
Computer settings\Windows settings\Security settings\Local policies\Security options下的本地组策略中将User Account Control: Run all administrators in Admin Approval Mode设置为False。
根据向IIS网站添加匿名帐户的方法,应该在网站根文件夹中添加两个帐户中的一个;
IIS_IUSRS (读取权限)在基本级别上,网站根文件夹应该包含以下权限;
| User Account | Permission | Notes
| ------------------ | --------------------- | ---------------------
| Administrators | Full Control | For File System access.
| <IIS Anonymous> | Read & Execute | Either IIS_IUSRS or a Custom Account.不要继承权限 建议禁用网站根文件夹上的继承,以停止父权限向下传播和覆盖任何现有权限,这可能是一项代价高昂的恢复工作。
发布于 2017-03-28 08:25:09
最后我发现了问题所在。
按照有关DCOM权限的一些提示,我使用"Components service“工具配置了"Microsoft.Excel”DCOM配置权限。但这还不够。
今天,我看到除了“权限”选项卡外,还有一个"Identity“选项卡。默认情况下,它选择使用“初始用户”,我希望它是运行IIS应用程序池的用户。我已经用一个“真正的”用户执行了这个池,所以我并不认为这是相关的,但是当我更改它并在那里选择一个特定的用户时,一切都开始工作了。
所以总结一下我的解决方案是:
希望这能给任何人一些线索。
https://stackoverflow.com/questions/43051764
复制相似问题