ユーザーがログオンする前に実行されるC#を使用して.netでWindowsサービスを作成しようとしています...ユーザーがログオンすると、システムトレイ(時計の横)にユーザーを示す記号が表示されますサービスが実行されていること..そのシンボルをダブルクリックすると、構成ユーティリティ(wpfで記述)がユーザーに表示され、ユーザーがサービスを構成したり、サービスからデータを読み取ったりできるようになります。
1つのアプリケーション内でこれを行う可能性はありますか?
助けてくれてありがとう!!!
いいえ、サービスは別のセッションで別のユーザーで実行されるため、1つのアプリケーションでこれを行うことはできません。2つのアプリケーションを作成し、両方の間に何らかの通信を実装する必要があります。
名前付きパイプを直接使用することはお勧めしませんが(Kieren Johnstoneが提案したように)、プロセス間通信用に設計され、通信テクノロジの実装の詳細をうまく抽象化したWCFを確認してください。WCFで適切に役立つリンクは次のとおりです:http ://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication 。
よろしく、
オリバーハナッピ
1つのアプリケーション内ではありません。サービスはセッション0で実行されます。こちらをご覧ください:
http://www.microsoft.com/whdc/system/sysinternals/session0changes.mspx
あなたの最善の策は、名前付きパイプを使用することです。ここを参照してください:
http://www.switchonthecode.com/tutorials/dotnet-35-adds-named-pipes-support
....またはメモリマップトファイル。ここを参照してください。
more-.NETtyの範囲内で、Remotingを使用することもできます。サービスと管理ユーティリティ間の通信を容易にするために、いくつかのインターフェイスまたはプロトコルを考え出す必要があります。ServiceControllerプロセスの開始/停止の管理が簡単になり、クラスを使用できます( MSDN ref)。
それが役立つことを願っています(そしてそれはあまり落胆しません)!