Windowsのレジストリを見るとCLSIDというのが出てきますが,コレは一体なんですか。
Windowsは,COM(Component Object Model)と呼ばれる,OLE2をベースにしたソフトウェア部品をサポートしています。COM部品はEXEファイルやDLLファイルの中に実装され,Windowsが規定している公開関数によって,部品へのインタフェースを提供します。
ソフトウェア部品には,当然ながら使用者と提供者があります。ちなみに使用者をクライアント,提供者をサーバーと呼んだりします。使用者が例えば時計のCOM部品を使いたいと思ったとします。使用したい時計部品がWindowsの中にあるとして,どのEXE/DLLファイルに部品が実装されているかを知る方法が必要になることは理解できると思います。
Windowsでは,部品のインタフェースを実装しているファイルの場所を探すために,GUIDを使用します。GUIDには,質問にあるCLSIDとIIDがあります。IIDはレジストリに登録されるIDではなく,オブジェクトの中に埋め込まれる128ビットの識別子です。
一方,質問のCLSID(コンポーネントクラスID)はレジストリに登録されている識別子です。CLSIDは,WindowsのCOMシステムサービスが,そのモジュールに含まれる部品を識別し,探すために使われると考えておけばよいでしょう。
具体的にはレジストリ\\HKEY_CLASS_ROOT\CLSIDの下にWindowsにインストールされているCOM部品のCLSIDが列挙されています。各CLSIDの下には,それが実装されているファイル名やパス名などの情報が埋め込まれています。
自分が使いたい部品のCLSIDさえ知っていれば,あとはWindowsがCLSIDを手がかりに部品を探してロードしてくれる,というわけです。
(米田 聡)
レジストリエディタでCLSIDの一つを覗いたところ