惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Vercel News
Vercel News
月光博客
月光博客
S
SegmentFault 最新的问题
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
N
Netflix TechBlog - Medium
小众软件
小众软件
WordPress大学
WordPress大学
G
Google Developers Blog
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
博客园 - 【当耐特】
I
InfoQ

博客园 - 南阳·源

ThinkPHP运算符与PHP运算符对照表 ThinkPHP常用配置路径 Asp.Net MVC3(三)-MvcApp实现全局异常捕获 Json数据字符串 反序列化对象时出现错误。遇到意外字符 ICSharpCode.SharpZipLib.dll压缩的zip包,7zip解压时出错 日期转换为中文日期 向大家推荐一款UI对话框框架artDialog Asp.Net MVC3(二)-过滤器定义 Asp.Net MVC3(一)-多Area时,路由设置问题 Json数据序列化对象,及对象序列化为Json格式 序列化/反序化 C# Enum转换 List<T> OrderBy问题 WCF访问安全 跨域访问WCF问题 Split [转]RegistryKey 操作注册表 js控制ctrl+p sql:过滤字段中是否包含数字
[转] 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-...
南阳·源 · 2011-11-11 · via 博客园 - 南阳·源

前一阵子做开发需要用到Excel和Word编程,本人用的是2003系统,开发环境是VS2008和Office2007,测试无任何问题,可是到部署的时候出现了一些令人很头痛的问题,老是会出现例如:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a。 的错误.
在网上查询了许多资料,大多是二种解决方案:
1,增加虚拟权限: 在web.config里面增加的键值;要求windowsloginid具有管理员权限,这种方案使用后确实可行,可是不利于部署,因为有经验的人都知道把一个最高权限的服务器帐号密码公开显示在配置文件上有什么后果。所以这种方案不可行。那么就牵涉到第二种方案。
2,增加Com组件的交互式访问权限: 这也是网上搜索率最高的一种方式,运行“DCOMCNFG”,找到 Microsoft Excel 97/2000/2002 - Microsoft Excel 应用程序 Microsoft Word 2000/2002 - Microsoft Word 文档
这些组件的交互式访问权限,详情可以参见: http://support.microsoft.com/kb/288366 这种方案应该是可行的,可是我在我自己的机器上一级服务器上试验过很多遍都不行,最后我试着用特定的用户来访问,如果细分的话,这里可以算为第三种解决方案了^_^
3,增加Com组件特定用户的访问权限。 这才是我今天说的重点,也是帮我解决了实际难题的一重解决方案,简略的说可以这么做:建立一个所需的帐号(例如test),权限为Power User或者User; 用此帐号运行一次word或者excel(确保有访问权限); 运行DCOMCNFG,在Dcom组件里面找到Microsoft Excel 应用程序或者Microsoft Word 文档(和前面一样)-属性-标识里面选择“特定用户”,然后输入前面建立的帐号和密码就可以了增加组件访问权限在有的机器上测试还需要在前面的安全标签里面添加这个账号的启用和访问权限.当然直接用自己登陆的帐好也是可行的
4. 终极办法,将第三条和第一条结合,用户对应。效果100%
在web.config中使用身份模拟,在<system.web>节中加入: 在web.config中使用身份模拟,在<system.web>节中加入:

<identity impersonate="true" userName="你的用户名" password="密码"/>