Interop.domino.dllアセンブリを使用してドミノ/メモと対話してドキュメントを作成、更新、削除するC#コンソールアプリケーションを作成しました。アプリケーションは、cmdプロンプトまたはVisual Studioを使用して手動で実行すると正常に実行されます。しかし、我々はスケジュールされたタスク(ドメインサービスアカウントで実行されている)のようなアプリケーションをセットアップしようとすると、それが次のエラーで失敗します。Interop.domino.dllを使用したC#コンソールアプリケーション - スケジュールされたタスクとして実行すると失敗する
- System.Runtime.InteropServices.COMException:コンポーネントのCOMクラスファクトリを取得 エラーのためにCLSID {29131539-2EED-1069-BF5D-00DD011186B7}が失敗しました:80004005不特定のエラー(HRESULTからの例外:0x80004005(E_FAIL))。
エラーはできるだけ早く我々は次のとおりのNotesSessionオブジェクトのインスタンスを作成しようとし、具体的とき、Interop.domino.dllからオブジェクトを使用しようとして発生します。
- ISessionは、NotesSession =新しいNotesSession();
は、いくつかの調査の後、私は相互運用機能アセンブリはと対話するためのデスクトップが必要であることを発見し、我々はマシンにログインし、サービスアカウントを使用してスケジュールされたタスクを実行した場合、スケジュールされたタスクで実行されていた、スケジュール正常に実行することをことを。サービスアカウントとしてログインしているときに、アプリケーションが実行されている間にsvchost.exeウィンドウが表示され、それがデスクトップを必要とする理由がわかります。
ただし、マシンにログインしているサービスアカウントは、サーバーが再起動するたびにアカウントを再度ログインする必要があるため、常に受け入れられる解決策ではありません。サービスアカウントがマシンにログインできるようにすることに関するセキュリティ上の懸念もあります。
だから、誰かがこの問題を回避する方法について何か提案があったのでしょうか?アセンブリが表示しようとするUIを抑制する方法はありますか?あるいは、誰もが同様の結果を達成する予定のタスクに代わるものを提案することができます。私たちがしなければならないことは次のとおりです。
- は、設定された間隔でアプリケーションの実行を持っている(IE - /一日一回1時間に1回)
- 理想的には、それは、ドメインサービスアカウントで実行されている(とは対照的に、ローカルシステムアカウント)サービスアカウントを必要とせずに
- 実行して、マシンにログインする/ Interop.domino.dllからUI要素は
我々はノートウェブを利用する同様のアプリケーションを書くことについて考えているの抑制しましたサービスを提供することができます。コンソールアプリケーションをスケジュールされたタスクとして実行させないでください。しかし、可能ならば私がすでに書いたものを利用したいと思っています。
更新01/05/12
Iは、DNAの男のソリューション@ごとにNOTESNTSERVICE OS環境変数をetting試してみました。しかし、これは問題を解決しませんでした。
今のところ、アプリケーションは、ローカルシステムアカウントで実行され、デスクトップとの対話性が許可されたWindowsサービスとして設定されています。これは理想的ではありません。簡単にスケジュールを立てることはできず、ドメインサービスアカウントでは実行されていませんが、アプリケーションが機能するので、今のところこのアプローチを使用します。
は、このアプローチを示唆した答えがありましたが、ので、私はそれが正しいものとしてマークすることはできません削除されているようです。他の人に提案があるかどうかを確認するために質問を開いておきます。
ドミノサーバーがある場合、ネイティブのノーツエージェントを実行してみませんか? – leyrer
これはinteropアセンブリとは関係ありません。宣言とコードは含まれていません。 IBMにサポートを依頼してください。 –
@leyrer - 私たちは、C#アプリケーションを動作させることができない場合、タスクを実行するためのノートエージェントを書く道を告げることになるかもしれません。しかし、アプリの開発の遅れでこの問題を発見しただけで、可能ならばすでに書いたものを利用したいと考えています。 –