C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: C#でCOMの登録を自動化する


(過去ログ 62 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■36022 / inTopicNo.1)  C#でCOMの登録を自動化する
  
□投稿者/ ごぼう男 (6回)-(2009/05/18(Mon) 18:56:38)

分類:[.NET 全般] 

2009/05/18(Mon) 19:00:12 編集(投稿者)

VisualStudio2008を使い、C#でアプリケーションを作っています。
アプリケーションを実行するにはあるCOMを登録する必要があるのですが、
配布した先でユーザーにコマンドプロンプトから regsvr32 コマンドを使って登録してもらう
手間を省きたいので、アプリケーションを起動すると自動的にCOMが登録される・・・
ということがやりたいのですが、どのようにすればよいのでしょうか。
どうかご教授お願いします。
引用返信 編集キー/
■36023 / inTopicNo.2)  Re[1]: C#でCOMの登録を自動化する
□投稿者/ ごぼう男 (7回)-(2009/05/18(Mon) 19:07:27)
すみません。おそらくリンカに設定したりビルド後のイベントに設定すれば良い
のですね。すぐに試すことができない状況なのですがあとでやってみます。
お騒がせしました。
引用返信 編集キー/
■36026 / inTopicNo.3)  Re[2]: C#でCOMの登録を自動化する
□投稿者/ オショウ (189回)-(2009/05/18(Mon) 19:09:57)
No36023 (ごぼう男 さん) に返信
> すみません。おそらくリンカに設定したりビルド後のイベントに設定すれば良い
> のですね。すぐに試すことができない状況なのですがあとでやってみます。
> お騒がせしました。

  それだったら、その開発マシンでしか無理になりますが・・・

  配布先(稼働PC)で自動的に・・・と言う主旨ではないのでしょうか?

以上。
引用返信 編集キー/
■36027 / inTopicNo.4)  Re[3]: C#でCOMの登録を自動化する
□投稿者/ ごぼう男 (8回)-(2009/05/18(Mon) 19:25:20)
No36026 (オショウ さん) に返信
>   それだったら、その開発マシンでしか無理になりますが・・・

すみません。試さずに書き込んでしまいました。


>   配布先(稼働PC)で自動的に・・・と言う主旨ではないのでしょうか?

その通りです。やり方や、参考になるサイト等をご存知の方
どうかご教授お願いします。
引用返信 編集キー/
■36029 / inTopicNo.5)  Re[1]: C#でCOMの登録を自動化する
□投稿者/ 渋木宏明(ひどり) (1160回)-(2009/05/18(Mon) 19:31:49)
渋木宏明(ひどり) さんの Web サイト
インストーラで対応するのが一般的な対応です。

COM 登録には管理者権限が必要ですが、そのアプリケーションは管理者権限のあるユーザが管理者権限が有効な状態で実行されるものですか?

管理系のツールでもない限り、エンドユーザに管理者権限でのアプリケーション起動を強制できないはずなので、「アプリケーション起動時に…」というシナリオは見直すべきだと思います。


引用返信 編集キー/
■36030 / inTopicNo.6)  Re[4]: C#でCOMの登録を自動化する
□投稿者/ やんち (2回)-(2009/05/18(Mon) 19:35:32)
COMの登録処理は、レジストリを書き換えれば出来るような気がします。
必要な、レジストリキーなど調べて、検証してみるとか。

後は、
DLL内に、レジストリ登録用の関数を用意してあるなら、それを呼び出してみるとかする。

といけそうな気がします。

試したことはないので、試してみてください。

引用返信 編集キー/
■36031 / inTopicNo.7)  Re[2]: C#でCOMの登録を自動化する
□投稿者/ ごぼう男 (9回)-(2009/05/18(Mon) 19:36:12)
No36029 (渋木宏明(ひどり) さん) に返信
> インストーラで対応するのが一般的な対応です。
>
> COM 登録には管理者権限が必要ですが、そのアプリケーションは管理者権限のあるユーザが管理者権限が有効な状態で実行されるものですか?
>
> 管理系のツールでもない限り、エンドユーザに管理者権限でのアプリケーション起動を強制できないはずなので、「アプリケーション起動時に…」というシナリオは見直すべきだと思います。


ありがとうございます。そうなのですか・・・
さきほどフリーソフトのインストーラをダウンロードしてきましたの
で、試してみることにします。
引用返信 編集キー/
■36033 / inTopicNo.8)  Re[2]: C#でCOMの登録を自動化する
□投稿者/ aetos (143回)-(2009/05/18(Mon) 19:37:46)
No36029 (渋木宏明(ひどり) さん) に返信
> インストーラで対応するのが一般的な対応です。
>
> COM 登録には管理者権限が必要ですが、そのアプリケーションは管理者権限のあるユーザが管理者権限が有効な状態で実行されるものですか?
>
> 管理系のツールでもない限り、エンドユーザに管理者権限でのアプリケーション起動を強制できないはずなので、「アプリケーション起動時に…」というシナリオは見直すべきだと思います。

HKEY_CURRENT_USER \ Software \ Classes への登録であれば、一般ユーザー権限でもできそうな気がしますが。
引用返信 編集キー/
■36034 / inTopicNo.9)  Re[3]: C#でCOMの登録を自動化する
□投稿者/ オショウ (191回)-(2009/05/18(Mon) 20:05:11)
> HKEY_CURRENT_USER \ Software \ Classes への登録であれば、一般ユーザー権限でもできそうな気がしますが。

  VISTA でも、一般ユーザーでそこには問題なく書き込めました。

以上。情報まで・・・

引用返信 編集キー/
■36040 / inTopicNo.10)  Re[4]: C#でCOMの登録を自動化する
□投稿者/ Azulean (388回)-(2009/05/18(Mon) 22:55:24)
No36034 (オショウ さん) に返信
>>HKEY_CURRENT_USER \ Software \ Classes への登録であれば、一般ユーザー権限でもできそうな気がしますが。
>
>   VISTA でも、一般ユーザーでそこには問題なく書き込めました。

Current_User、現在のユーザなので大抵のキーは書き込み可能です。
そもそも、「書き込めること」がポイントではなく、「COMを利用できる状態にすること」がポイントです。
そこの追試結果はどうったんでしょうか?
引用返信 編集キー/
■36054 / inTopicNo.11)  Re[5]: C#でCOMの登録を自動化する
□投稿者/ とっちゃん (390回)-(2009/05/19(Tue) 12:10:03)
とっちゃん さんの Web サイト
えっと、ターゲットOS書いてないんで...

HKEY_LOCAL_MACHINE\SOFTWARE\Classes に書き込みできなきゃCOMの登録は出来ないと思ってください。
それと、タイプライブラリの登録APIは、内部仕様により、HKEY_LOCAL_MACHINEに書き込みします。

で、これが理由で、IDispatchを提供するオブジェクトの登録には必ず管理者権限が必要となっています。
DualInterfaceになっていて、IDispatch を使わないように作られていればタイプライブラリは
なくても動きますが、そうではない場合、タイプライブラリは必須となり、登録にはどのような条件があろうとも
管理者権限が必要となります。

ってことで、インストーラ作ってそれで対応。でFAかと。。。
Vista がターゲットなら、昇格もできるし、何も問題ないと思いますよ。

というか、自身のアプリも含めてインストーラ書いてしまうのが一番いいのではないかと思います。
そうすれば、ショートカットも用意できるし...

引用返信 編集キー/
■36055 / inTopicNo.12)  Re[5]: C#でCOMの登録を自動化する
□投稿者/ ごぼう男 (10回)-(2009/05/19(Tue) 12:12:45)
Application.UserAppDataRegistry や、
Microsoft.Win32.RegistryKey にあるメソッドを
使用して、レジストリに書き込めることを確認できました。

あとは、レジストリのどの場所にどのような値を書き込めば
COMを登録できるのでしょうか。

どうか教えてください。
引用返信 編集キー/
■36056 / inTopicNo.13)  Re[6]: C#でCOMの登録を自動化する
□投稿者/ ごぼう男 (11回)-(2009/05/19(Tue) 12:18:08)
No36054 (とっちゃん さん) に返信
ほぼ同時に書き込んでしまいました。
やはりインストーラを作成するべきですね。




引用返信 編集キー/
■36076 / inTopicNo.14)  Re[7]: C#でCOMの登録を自動化する
□投稿者/ ごぼう男 (12回)-(2009/05/20(Wed) 00:09:31)
いろいろ調べていたところ、
http://bitwiz.jp/tabid/56/EntryID/64/Default.aspx
にあったマニフェストを作製するやり方で、解決できました。
いろいろなご意見ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -