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注冊某個組件或反注冊某個組,其實就是調用這兩個函數的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM