質問: ある.NetFramework4.0向けの Visual Studio のソリューションを IDE上から実行しようとしたところ、 ``` アセンブリ "XXX.dll" を登録できません - アクセスが拒否されました。管理者としてアプリケーションを実行しているか確認してください。レジストリ キー 'HKEY_CLASSES_ROOT\XXX.XXXDef' へのアクセスが拒否されました ``` という、メッセージが出力され、ビルドに失敗しました(ビルドそのものは成功していて、COM登録に失敗したようですが) このソリューションは プロジェクト1(実行ファイル.exe) プロジェクト2(関数集.dll) という構成になっていて、 プロジェクト1がプロジェクト2を参照しています 管理者権限でVisualStudioを実行すればエラーは発生せずに実行できるし、他のマシンに exeとdllをコピーすれば、Regsvr32でdllをわざわざ登録しなくても動作します 質問なのですがそもそも.NetFramework用のライブラリをCOM登録する意味はあるのでしょうか
回答: .NETアセンブリ―をCOMオブジェクトとしてシミュレートさせることで、.NET Framework以外で動作するCOMオブジェクトを参照可能な環境(例えばVBA)から.NETで実装したオブジェクトを使用することが可能になります。 またCOM相互運用の可否はプロジェクトのプロパティページの「ビルド」タブにある「COM相互運用機能の登録」で設定できます。