Win7下一种将.Net组件注册为COM组件方法

以下信息来源于百度百科

  COM(组件对象模型)实际上像结构化编程和面向对象编程方法那样,也是一种编程方法,COM与语言、平台无关,在任何一种操作系统中,开发人员都可以遵循“COM方法”,组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。

  COM组件由以Win 32动态连接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成。组件的优点在于可以将它们动态的插入或卸出应用,为了实现这种功能,所有组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。

  展望:作为一名软件开发人员如何做才能满足用户的需要呢?必须要保证升级应用时不破坏与以前版本的向后兼容性。必须做到扩展系统服务时不依赖特定的操作系统。面向对象的程序设计显然是一次革命性的改变。采用面向对象的设计方法我们可以很容易的把要解决的问题事物抽象成各种类,并将内部动作封装隐藏起来,只提供一些接口。但这并没有完全解决我们的问题。昨天我在《程序员》杂志上看到,现在是后OO时代,那OO以后是什么呢?应该是面向组件吧。一个组件代表一个系统中实现的物理部分,包括软件代码(源代码,二进制代码,可执行代码)或者一些类似内容,如脚本或者命令文件。”所以面向组件编程是很难实现的,面向组件技术建立在对象技术之上,它是对象技术的进一步发展,类的概念仍然是组件技术中一个基础的概念,但是组件技术更核心的概念是接口。(以上展望仅供参考)

  COM组件注册是指Windows编程中,为了使用自定义或第三方COM对象,对进程内组件(DLL)和进程外组件(EXE),利用自注册(self-registering)和非自注册组件程序而进行的操作。

  在使用.net中注册组件,有三种方式:

  1.手动注册: win9x/NT/2000系统提供一个用于注册进程内组件的实用工具RegSvr32.exe,如regsvr32 c:\test.dll;在.NET(XP系统出来以后)下面,注册.NET组件就需要regasm命令了,如C:\>regasm out ClassLibrary1.DLL /regfile:ClassLibrary1.reg 。

  2.编程注册:使用registrationhelper类,主要是利用在iregistrationhelper接口中的方法。

  3.动态注册:是指在执行应用程序过程中,检查安装组件的版本,如组件的正确版本没安装,则在运行时自动安装需要的版本,即自动注册。  

开发环境 WIN7、VS2008、VBS

为客户机注册.NET组件

  问题陈述:VS2008提供了方便的可以将.NET组件为COM互操作注册的方法,流程如下1、在项目属性中选中“为Com互操作注册”2、控制程序集中个别托管类型、成员及所有类型对Com的可访问性。1、2步骤可参考以后2图

  

  

  但是此方法仅实现在本地注册.NET组件,但是在客户机上将.NET组件注册为COM组件较为复杂,网上提供了几种注册方法,归结起来主要有两种1、regasm命令2、在MTS(微软事物服务器)下注册

  但是方法一实现较为困难,且不易实现,在WIN7下还要以管理员方式运行。法二(尚未尝试......)。这里提供一种更为简洁有效的注册方法,在上述两部本机注册基础之上,在本地生成“项目安装和部署文件”(EXE),在客户机上运行程序完成自动注册。流程如下

  

确认之后直接在本地生成项目安装文件,将其拷贝至目标机中安装即可完成注册(此方法仅在主机:win7 目标机XP下完成测试,并未进行其他顺序测试)注意:目标机和主机.NET版本需相同

posted on 2012-10-09 10:52  瘦肉微辣  阅读(1614)  评论(0编辑  收藏  举报

导航