APPIDの必要性について

[戻る]
たくみ 2009/04/04(土) 13:22:53
おせわになっております。

COMオブジェクトを作成するときにATLプロジェクトから作成しているのですが
レジストリに HKEY_CLASSES_ROOTのAppID以下にモジュール名とAPPIDが
登録されるようになっています。

この登録がなぜ必要なのでしょうか?

http://msdn.microsoft.com/ja-jp/library/4cb7td54.aspx
MSDNのページを読む限りDCOMに関係しているようですが、
通常COMオブジェクトを使用するときには必要なさそうに見えます。

レジストリからこの項目を削除しても COMオブジェクトを使用することが
できました。
登録をやめることでなにか弊害があったりするのでしょうか?

また、必要な場合に TYPELIBと同じCLSIDにしても大丈夫でしょうか?

Atata!! 2009/04/05(日) 01:36:18
Atata!!です。

文書のリンクでも貼ろうと思って探してみたら、AppID自体の解説が全然無いです
ね・・・。


> この登録がなぜ必要なのでしょうか?

ATLのDLLプロジェクトではほぼ不要と言って差し支えありません。
DLLの場合、サロゲートプロセスを使用する場合(COM+として構成するのも含めて)に使用
します。

ATLのEXEとサービスプロジェクトでは、プロセスのセキュリティと起動方法を制御するの
に使用します。
前述のサロゲートプロセスのセキュリティと起動方法を制御するのにも使用されます。


> 登録をやめることでなにか弊害があったりするのでしょうか?

上記の使用内容に該当しなければ特に問題ありません。
ただし、DCOMCNFG等でDCOMの構成画面を起動した際、AppIDが勝手に設定されるのです
が、
その時に表示されるメッセージボックスが鬱陶しいと思うなら
設定しておいてもいいのではないでしょうか?


> また、必要な場合に TYPELIBと同じCLSIDにしても大丈夫でしょうか?

レジストリの HKEY_CLASSES_ROOT\AppID キー配下で一意であれば問題ないようです。

# 私の実験した限りですが、公式な文書は見たことがありません。

古いスレッドには追加発言できません。