0
点赞
收藏
分享

微信扫一扫

windows 免注册COM (配置manifest)

外贸达人小峻先森 2022-03-12 阅读 63
linqp2pc#

    Windows XP 引入了一种新的 COM 激活模型,称为: 免注册COM,简称为 Reg-Free COM。简单地说,Reg-Free COM 是 COM 组件的注册表替代品。它通过将通常安装到系统注册表中的所有标准组件注册信息表达在一个文件中,该文件可以存储在与应用程序本身相同的文件夹中。
    免注册COM技术,操作系统在加载EXE时会自动扫描是否包含配套的manifest信息,若有则读取manifest内容加载组件,否则读取注册表。 manifest描述了EXE里面引用了哪个DLL库、DLL里面提供了什么接口等信息,只要给EXE、DLL加上配套manifest即可完成免注册工作。

    一、Manifest

    Manifest事实上就是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,其内部的信息如<assemblyIdentity>元素则标识着一个唯一的程序集,和其他信息一起,他们用于COM类、接口及库的绑定和激活,而这些信息,以往都是存储在注册表中的。另外,Manifests也制定了组成程序集的文件及Windows类。

    二、Manifest的分类
    在Windows中,事实上是在.NET中,把Manifests分类为如下几种类型:
    1、程序集Manifests(Assembly Manifests):主要用于描述程序集,管理程序集的名字、版本、资源、依赖程序集。其中共享程序集的Manifests存储在Windows的WinSxS目录中。私有的程序集Manifests则存可以作为一个资源存储在DLL中,也可以存储在应用程序目录下。
    2、应用程序Manifests(Application Manifests):这类Manifests则用于描述隔离应用程序,它管理着此应用程序在运行时要绑定的共享的并行组件的名字、版本。该Manifests可以作为一个文件(.manifest文件)存储在应用程序相同的目录下,也可以作为一种资源嵌入在可执行文件内部(Embed Manifest)。
    3、应用程序配置文件(Application Configuration Files):对于并行组件及隔离应用程序来说,使用这种Manifests来“Override and Redirect”所依赖程序集的版本。
    4、发行配置文件(Publisher Configuration Files):用于重定向并行组件的版本到另外一个合适的版本的Manifests。此时,被重定向的新程序集应该和原来的旧程序集具有相同的主.次(majou.minor)版本号。

    三、Windows对于Manifest的处理
    XP以前版本的windows,执行exe文件时,寻找相应的dll,程序会直接到system32的目录下查找,或EXE同目录中搜索。
    XP及其以后的操作系统,首先读取Manifest,获得exe文件需要调用的DLL列表(此时获得的,并不直接是DLL文件的本身的位置,而是DLL的manifest)操作系统再根据DLL的Manifest提供的信息去寻找对应的DLL ,这样就可能区别不同版本的同一个DLL文件。
 

举报

相关推荐

0 条评论