zoukankan      html  css  js  c++  java
  • Widows 注册表 HKEY_CLASSES_ROOT

    Widows 注册表 

    HKEY_CLASSES_ROOT在此关键字之下,可以看到有一个CLSID关键字。在CLSID关键字之下列有系统中安装的所有组件的CLSID。注册表CLSID是一个具有如下格式的串:00000010-0000-0010-8000-00AA006D2EA4

     

    HKEY_CLASSES_ROOT的开头,列出的将是各种应用程序所注册的文件扩展名。在扩展名之后,可以看到许多其他的名字。此类名字的大多数被称作是ProgID,表示是程序员定义的标识符。某些名称表示的不是ProgID而是一些特殊的关键字.

    •  CLSID
    •  AppID—此关键字下的子关键字的作用是将某个APPID(应用程序ID)映射成某个远程服务器名称。分式COM(DCOM)将用到此关键字。
    •  组件类别—注册表的这一分支可以将CATID(组件类别ID)映射成某个特定的组件类别。
    •  Interface—此关键字用于将IID映射成与某个接口相关的信息。这些信息主要用于在跨进程边界使用接口的情况。
    •  Licenses—保存的是授权使用COM组件的一些认可信息。
    • TypeLib—类型库关键字所保存的是关于接口成员函数所用参数的信息。另外还有其他一些信息。此关键字可以将一个LIBID映射成存储类型库的文件名称。

    ProgID所谓ProgID指的是程序员给某个CLSID指定的一个程序员易记的名称。

    ProgID命名约定

    <Program>.<Component>.<Version>

    如下图:

     

    其中如WPP.Application是版本无关ProgID,根据其值可在CLSID下找到相应键,以此找到相应信息,如组件最新版本信息。WPP.Appplication.1是版本相关的ProgID,根据其CLSID值可在找到该版本组件的信息。

    ProgID注册表格式

    ProgID及与版本无关的ProgID被列在组件CLSID下面。

     

    ProgID的主要作用是获取相应的CLSID。在每一个CLSID项中查找查个ProgID将是非常低效的。因此在 的下面也将直接列出ProgID。由于ProgID不是针对最终用户而定义的,因此ProgID关键字的缺省值为用户易记的名称。在 之下有一个名为CLSID的关键字,其缺省值为组件的CLSID。如下图所示:

     

    与版本号无关的ProgID 也直接被列在HKEY_CLASSES_ROOT下面。它们还有另外一个关键字CurVer,其缺少值为组件当前版本的ProgID

     

     

    ProgIDCLSID的转换

    CLSIDFromProgID

    ProgIDFromCLSID

    组件的自注册

    为把组件注册到注册表,在DLL一定要输出如下两个函数:

    STDAPI DllRegisterServer();     // 注册

    STDAPI DllUnregisterServer();   // 反注册

    我们使用REGSVR32.exe注册某个组件或反注册某个组,其实就是调用这两个函数的。

  • 相关阅读:
    (转)asp.net页面出错时的处理方法
    Angular.js学习笔记 (二) H.U.C
    一套常用的css初始化样式 H.U.C
    hexo工具介绍及使用方法 H.U.C
    Angular.js学习笔记 (一) H.U.C
    Nhibernate 对view 查询的几种方法
    如何做类似google的Textbox的AutoComplete增强版,可以显示多列
    POS 打印机编程控制
    (转) 商品损耗控制
    win 2008 IIS 7 安装 PHPMYAdmin
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/8640710.html
Copyright © 2011-2022 走看看