Dsoframer注册方法

来源:互联网 发布:数据库模型图是什么 编辑:程序博客网 时间:2024/06/05 02:42

引言:dsoframer是微软提供一款开源的用于在线编辑、调用Word、 Excel 、PowerPoint等的ActiveX控件。

相信不少人都会遇到文档在线编辑的问题,特别是OA系统。目前可以实现文档在线编辑功能的软件有很多,大部分需要收费,在开发这方面时,查阅了不少资料,偶然看到dsoframer,发现正是我想要的,于是开始正式了解它。

首先看下效果图。
这里写图片描述

方法是将文档下载到本地,通过用户本机的软件打开文档,所以开发的是客户端程序,嵌套在Widget中,编辑完成再上传至服务器。这种方法有利有弊。
利:兼容性强,大部分用户的机器都可以使用,经测试,目前可支持 windows xp及其以上系统包括win 10,Office 支持2003及其以上,另还支持WPS。文档在编写的时候不会丢失,不用担心网络问题。
弊:客户端需要用户安装,文档经过下载和上传,一定情况下影响了效率。

介绍了这么多,回归正题,如何去注册dsoframer(要想实现文档编辑,客户机上必须要注册dsoframer.ocx控件),网络上有很多方法,大部分都是通过复制dsoframer.ocx到某个路径,然后在 命令行 regsvr32命令注册dsoframer.ocx,如:
这里写图片描述

这种方法开发在自己环境中可以随意去注册,但是客户机上通过这种方法肯定不妥,一、方法不好实现,需要每打开一次客户端就去注册一次或者验证有没有注册过,二、需要考虑到32、64的问题,三、需要考虑系统的问题,等等。所以研究一种只需要注册一次并且完全兼容所有环境的方法迫在眉睫,经过反复的研究,发现regsver注册过后的控件,最终信息都是存在注册表中,所以直接操作注册表也是可以实现dso的注册的。

注册表中存在多个dsoframer的信息,例如:
这里写图片描述

经过多次的实验摸索,找到最主要的是这个:
这里写图片描述

在HKEY_CLASSES_ROOT/Wow6432Node/CLSID 下。

{00460182-9E5E-11d5-B7C8-B8269041DD57} 就是dsoframer在注册表中的Id。

所以问题就很简单了,只要在用户安装客户端时,即往注册表中插入该条信息,就可以无需去注册dsoframer了。

至于如何向注册表中插入信息,大家可以查下相关api,我是在打包时既往注册表中注入数据的,例:
这里写图片描述

注意:由于系统的区别 所以有时会在Wow6432Node中,有时直接在CLSID下 ,所以注册的时候,直接注册在CLSID就可以了。

1 0