2011-06-20 23 views
3

COMコンポーネントを呼び出す.NET C#で書かれたWindowsサービスがあります。私はまた、COMコンポーネントをテストするために使用していた.NET Windowsフォームテストアプリケーションを持っています。テストアプリからうまく動作します。しかし、Windowsサービスで同じコードを使用すると何も起こりません。 COMコンポーネントはすべてをログに記録し、ログファイルが生成されないという事実は、COMコンポーネントが呼び出されていないことを暗示します。.NETコンポーネントからCOMコンポーネントを呼び出す

なぜ私のテストアプリケーションでは動作しますが、Windowsサービスでは動作しませんか?

+0

COMコンポーネントについて詳しく説明してください。例えば、それは何に書かれていますか?おそらく、コンポーネントはメッセージポンプを持つプロセスで動作していると想定しています。 –

+0

コンポーネントはVisual Studio 6でATLで書かれています。これはexeコンポーネント(dllまたはサービスではありません) – Jonnster

+0

です。デスクトップアプリケーションの外でコンポーネントを初めて使用しようとしたときですか? ASP.NETやWebサービスで使用したことはありませんか?つまり、デスクトップアプリケーションの外部には存在しないメッセージポンプなどに依存していることが示唆されます。 –

答えて

4

通常、サービスはデスクトップから分離されて実行されるため、COMコンポーネントの呼び出しはサービスから呼び出されたときにUIから分離されます。あなたはallow a service to "interactWithDesktop「インタラクティブサービスを使用して上のセクションを参照してくださいことがあります。

マイクロソフト(<sarcasm>in their infinite wisdom</sarcasm>は)この機能は、ウィンドウビスタから削除し、あなたのUIとあなたのサービスの間の通信を達成するためにseparating your application into multiple parts and using other mechanismsをお勧めすることを決定した。明らかに、いくつかの(

http://msdn.microsoft.com/en-us/library/ms683502.aspx

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/e50d8819-d628-48e2-aa2c-6ac6de8380d9/

+0

これは、.NETサービスからCOMコンポーネントを呼び出すことにどのように関連していますか? – Jonnster

+0

私はこのサービスが** COMと通信していると考えていますが、サービススペースで動作しているCOMがデスクトップ(または他のユーザースペース)とやりとりすることができないため、コンポーネントが動作しています。 –

+0

comコンポーネントをデバッグすると、C#.NETで書かれたWindowsフォームアプリケーションから呼び出すと、メソッドの開始時にブレークポイントが破損しますが、Windowsサービスから呼び出されたときにブレークしません?これが私がCOMコンポーネントを呼び出すとは思わない理由です。 – Jonnster

0

...それはそれが何であるかで、自分が)同意しないを含むが、ことは、あなたのSERVを実行していますLocalSystemアカウントの氷(Windows Servicesのデフォルト)?あなたのCOMコンポーネントは、通常実行できるアカウントで利用可能なリソースにアクセスする必要があります...

Log On tabでサービスを編集してアカウントを指定してみてください。

関連する問題