この特集のトップページへ
Chapter 2:Component Object Model

head2.gif 2.4.4 COMサーバーの登録と登録解除
 開発したCOMサーバー(dllファイル)は,そのまま別のコンピュータにコピーしただけでは動作しない。なぜなら,システムのレジストリが設定されないからである。

 すでに述べたように,Visual Basicで開発したCOMサーバーはActiveXであり,それ自身にレジストリの登録機能が搭載されている。COMサーバーにレジストリの登録機能が搭載されていれば,次のようにregsvr32ユーティリティを使うことで,その登録情報をシステムのレジストリに書き込むことができる。

   regsvr32 COMサーバーになっているdllファイル名

 regsvr32は,Windowsに標準でインストールされているユーティリティである。regsvr32によって正しくレジストリが登録されると,Fig.2-28のメッセージが表示される。

Fig.2-28 regsvr32によるレジストリの登録

fig2-28.gif

 Visual Basicで開発したCOMコンポーネントを別のコンピュータで実行させたい場合は,このようにファイルをそのコンピュータにコピーしたのちにregsvr32ユーティリティを実行し,レジストリに登録する必要がある。

 また,regsvr32を使えば,すでに登録されているレジストリ情報を削除することもできる。削除する場合には,次のように,“/u”オプションを伴なって実行する。

   regsvr32 /u COMサーバーになっているdllファイル名

 なお,当然のことであるが,COMコンポーネント(COMサーバー)がライブラリや別のCOMコンポーネントを使っている場合には,そのライブラリファイルや使っているCOMコンポーネントを提供するCOMサーバーのファイルも,動作させたいコンピュータにコピーし,正しくレジストリに登録しなければならない。

 Visual Basicで開発したアプリケーションであれば,VBRUN*.DLLファイルは動作に必須であるが,それ以外にも,たとえばCOMサーバーがADOコンポーネントを使っているような場合には,動作させたいコンピュータにADOコンポーネントがインストールされていなければならない。

 COMコンポーネントの完全な配布を考えるのであれば,COMサーバーのdllファイルだけをコピーするのではなく,Visual Basicに付属のディストリビューションウィザードなどを使って,セットアッププログラムを作ってしまうのも,方法としては悪くないだろう。

prevpg.gif Chapter 2 14/15 nextpg.gif