0

重複の可能性:
Windows サービスからの GUI アプリの読み込み

ユーザーのデスクトップで .exe を起動するサービスが必要です。また、ユーザーがデスクトップにログインするとすぐにこのサービスを開始する必要があります。(Windows 7 プラットフォーム)

SENS イベントはありますが、上記のパズルをどのように組み立てればよいかよくわかりません。また、ウィンドウの起動時に Runkey の .exe が起動することも知っていますが、サービスを Runkey に配置するにはどうすればよいですか?

どんな助けでも大歓迎です。

ありがとうございました。

4

3 に答える 3

2

Windows サービス以外の別のオプションは、ユーザーが対話的にログインしたときにトレイで起動するトレイ アプリを作成することです。これにより、常に実行されている Windows サービスが不要になり、ログインの発生を検出する必要がなくなります。ログインするとトレイで開始され、ユーザーとして実行されます。トレイアプリでGUIを提供して、サービスを開始/停止できます。

SO投稿は次のとおりです。

システム トレイでのみ実行される .NET Windows フォーム アプリケーションを作成するにはどうすればよいですか?

インタラクティブにログインしていなくても常に実行したい場合は、Windows サービスが最適です。

于 2012-10-10T00:20:04.497 に答える
0

Windowsサービスが必要になります。http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.80%29.aspxを確認してください。このサービスでは、ユーザーがログインしたときに検出する必要があります。開始されたWindowsまたはc#(。net)Windowsサービスでのユーザーログインを検出する方法は?

于 2012-10-10T00:09:44.103 に答える
0

サービスはデスクトップと対話できないように設計されているため、Vista 以降では、このように実際に行うべきではありません。この件に関するより詳細なドキュメントを次に示します。

http://msdn.microsoft.com/en-us/windows/hardware/gg463353.aspx

通常、デスクトップの実行可能ファイルをユーザーのスタートアップ フォルダーなどに配置し、サービスと通信させます。

あなたに影響を与える段落は次のとおりです。

より複雑な対話の場合、開発者は UI コードを、ユーザーのセッションで実行され、すべての UI 要件を処理するエージェントに移動する必要があります。エージェントは、RPC または名前付きパイプを介してサービスと通信します。ユーザーがコントロール パネル、Internet Explorer、または同様の UI エクスペリエンスを使用して UI 対話を開始した場合、その UI エクスペリエンスによってエージェントが開始されます。その後、エージェントはすべての UI 対話を処理します。UI が必要であるがユーザーによって開始されていない場合、サービスは、その UI を単独で起動しようとするのではなく、必要な UI を開始するようにエージェントに要求する必要があります。サービスがユーザー インタラクションを開始する必要があり、エージェントがまだ実行されていないというまれな状況では、サービスは CreateProcessAsUser API を呼び出してエージェントを開始する必要があります。その後、エージェントはすべての UI インタラクションを開始できます。

于 2012-10-10T00:23:53.930 に答える