最近一直在处理一个项目,项目主要功能与Office-Word 有关,主要涉及到文本内容编辑与样式设置等相关内容。因项目依赖office 相关dll,需要兼容多种Office 版本(office 2007/2010/2016)(主要在Windows7/10下使用)。项目使用Winform,采用webBrowser嵌入weboffice 形式,调用服务进行功能实现。
在使用初期,发现服务无法正常使用,日志记录:word 对象无法打开文件,可能文件损坏,或权限不足。
查阅资料,定位为office的 Word com组件权限不够,需要处理调用的组件权限。
先在安装office 32位的环境上测试:
1、打开 Win+R ,输入 comexp.msc -32 ,然后 回车:
2、就可以看到 “组件服务” 窗口;依次选择打开 : 控制台根节点==》组件服务==》计算机==》我的电脑==》DCOM 配置==》找到Microsoft Office Word 97 - 2003 文档
3、==》选择 Microsoft Office Word 97 - 2003 文档 ,右击选择 属性。按下面操作步骤进行配置。
在安全选项卡中,依次编辑 启动和激活权限、访问权限、配置权限;==》选择自定义, 点击 编辑==.》组或用户名 ,添加 everone 权限((授予)勾选所有system 权限)==》确定。
4、==》选择 标识 ,更改 运行账户为 交互式用户==》 应用/确定 。配置完成。
附:
写到这里,Com 组件权限配置基本结束了。
这里有几个问题:
1、如果安装的是Office 64 位出现这种情况怎么办?
2、如果我不使用Windows 命令能否操作?
对于问题1,暂时没有很好的解决方案;目前是计划后期更改程序底层Com 组件的功能依赖,使程序在Windows 10下不依赖Office-Word 的Com组件;因为测试发现,在Windows10 下配置com 组件后,功能很不稳定。在安装office 32 位的Windows 10系统下,测试发现Com 组件的属性标识改为启动用户能够正常使用一段时间,过段时间,属性标识再改成 交互式用户就又正常了。(64位Office 下 命令打开Com 组件: (Win+R )+Dcomcnfg==》 回车 查看方式与 32 位一致。)如果有遇到类似问题解决的,欢迎评论。
问题2: 打开Com 组件的方式很多: 可以直接在控制面板进行打开:控制面板==》管理工具==》组件服务==》组件服务列表中:选择组件服务==》计算机==》我的电脑==》DCOM配置。(以安装32 位Office 的环境为例,我通过这种控制面板方式打开的Word com组件中:
Microsoft Word 97 - 2003 文档的属性中 常规:本地路径为空,身份验证级别 :无;
位置选项卡中 : 在此计算机上运行应用程序 置灰,无法勾选。
非管理员用户:administrator 用户下新建的其他用户,权限隶属于 administrator。
)
(Win+R )+Dcomcnfg==》 回车 --打开64位Office 的Com 组件。
(Win+R )+comexp.msc -32==》 回车 --打开32位Office 的Com 组件。
上面为处理过程,如有描述不合理之处,请大家多多指教。
如果您觉得本文对您有帮助,欢迎点击“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎转载,转载请注明出处。