2012-01-31 67 views
3

C#でWindowsサービスを作成しました。私のサービスは、Excelのマクロ対応ブック(Excel 2010)を開くことを目的としています。 Windows Server 2008 64ビット版を実行しているサーバーにこのサービスをインストールしました。私のサービスは、誰もサーバーにログオンしていないときにExcelを起動する際に問題があるようですが、誰かがこれに対する解決策を持っていますか?サーバーからログオフしたときにExcelとC#でエラーが発生する

私は次のエラーを取得する:Excelは、サーバーにインストールされている

System.Runtime.InteropServices.COMException (0x8000401A): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 8000401a.

私は、サーバーにログオンしていますが、一度、すべてのユーザーが、私は上記のエラーを取得し、ログオフしてから、サービスが正常に動作します。サーバー上のオープンセッションに関係なく、Excelブックを起動するかどうかを確認します。

答えて

5

My service seems to have a problem launching Excel when no one is logged on the server, does anyone have a solution to this.

もちろん、問題があります。 Windows Services cannot show a user interfaceだから、ログインしているユーザーがいないときにMicrosoft ExcelなどのGUIアプリケーションを起動するにはどうしたらいいですか?

あなたは手段を受ける特定のCOMエラーコード:つまり

8000401a : The server process could not be started because the configured identity is incorrect. Check the username and password.

、Excelは、現在サーバーコンソールに直接ログオンしているユーザーを指しインタラクティブユーザーとして起動しようとしています。ユーザーは誰もログオンしていないため、対話ユーザーは存在せず、このIDを引き受けるときにアプリケーションが失敗します。

とにかくデザインが壊れました。ExcelはWindowsサービスから実行するようには設計されていません。代わりに、標準のWindowsアプリケーションを作成します。自身のUIなしでバックグラウンドで実行する必要がある場合は、ウィンドウを作成しないでください。

1

基本的に、コーディーグレイの答えは正しいです。以前は、ファイルを印刷するためにWindowsサービスからExcelを起動する必要がありました。

サービスを特定のユーザーアカウントとして実行するように設定し、そのユーザーアカウントとしてログオンし、エラーメッセージの表示に失敗したファイルを起動しようとすると、この種のエラーが発生することがありましたExcelでポップアップ。

あなたのケースでは、Excelが初めて起動し、あなたの頭字語のようなものを求めている可能性があります。

1

Officeオートメーションを使用してExcelを起動していますか?申し訳ありませんが、Office Automationはサービスプロセスではサポートされていません。インタラクティブなプロセスでのみ動作するように設計されています。

幸運なことに、サービスプロセスからOffice Automationを使用することはできません。運がよければと表示され、実際にはアプリケーションを実稼働環境に置くことになります。再現するのが非常に難しいランダムなバグを見つけ出し、何かを壊すことなく修正することがさらに難しくなります。

これは、実際のバグがというデザインバグであることに起因します。サービスプロセスからOffice Automationを使用したバグです。

体験声から取り出してください...

関連する問題