DLL(COMインターフェース)のレジストリ登録

DLLのレジストリ登録 - MSDN フォーラム

EXEの中で外部DLLの参照を行っている場合、
そのDLLをレジストリに登録しなければならないと思います。

その方法を調べてみるとregsvrce.exeを使う方法は見つかりましたが、
Windows Mobile 5.0のSDKには存在しませんでした。

最近では登録する方法が変わったのでしょうか?

古いSDKをインストールして、
そこからregsvrce.exe持ってこれば済む話なのかもしれませんが、
この辺りご存知の方がいらっしゃましたら教えて頂けないでしょうか?

よろしくお願いいたします。


というか、COMの登録ってよくregsvrce.exe(またはregsvr32.exe)を使うと言う説明があるけど、regsvrce.exeって実は全然たいしたことしてないというのを知らない人が多いんだろか。


regsvrce.exe(regsvr32.exe)って、単に引数で指定されたDLLをLoadLibraryして、DllRegisterServerをGetProcAddressして、それを呼び出すだけ。以上。ソースを見たことがある人ならわかるが、すごく単純な、短いプログラムなのだ。*1
実際のCOM登録(つまりCOM動作に必要なレジストリの登録)は対象のDLL内のDllRegisterServerで全て記述されている。regsvrce.exeはそれを呼び出すだけ。
つまりregsvrce.exeなんて無くてもいいわけで、あるCOM DLLを登録して使いたいのであれば単純に自分で
(1)対象のDLLをLoadLibrary
(2)DllRegisterServerをGetProcAddress
(3)取得したDllRegisterServer*2をコール
するだけで良い。


ちなみにアンインストール(regsvrce /u xxxx.dll)したい場合は、DllRegisterServerの代わりにDllUnregisterServerを呼び出す。

*1:Platform Builderを持ってる人なら
%_WINCEROOT%\PUBLIC\DCOM\SDK\SAMPLES\REGSVR
ソースコードがある。わずか177行、しかも空行、ブロック括弧{}だけの行が多い。スカスカのプログラム。

*2:PCの場合はこちらWindows CEと全く同じですが。