サービスを介してプログラムを実行したときに、プログラムが実際に表示されないのはなぜですか?

windows-services

メモ帳などのプログラムをサービスとして実行しているときに、プログラムが視覚的に見えないのですか。 タスクマネージャでメモ帳が実行されているように見えますが、実際にはインスタンスが実行されているのがわかりません。 どうしてこれなの?

  1  0


ベストアンサー

サービスは、フォアグラウンドアプリケーションではなくバックグラウンドアプリケーションとして意図されています。 一般にこれらは直接のユーザー入力なしで、またはIPCを介したユーザー入力を使用して実行されます(多くの場合、複数のアプリケーションが通信するための集中ポイントを提供します)。

アプリケーションを単にサービスとして実行するように設定することは一般的ではありません。 サービスとして実行されるアプリケーションは、特定のタスクを実行し、そのようなタスクを実行するために常に実行されることを望んでいる可能性があるため、一般的にそのように設計されています。

1


アプリケーションは実際にはサービスとしての実行をサポートする必要があります – 通常は “\ service”コマンドラインキーを認識することによって行われます。 アプリケーションによっては “\ service”キーがないことを認識し、何もしないか警告を表示します。

アプリケーションが「サービスとして」起動されると、通常はバックグラウンドで継続的に機能する必要があり、現在ログオンしているユーザーがいない可能性があります。 だからこそ、ユーザーの入力を期待してはならず、したがってウィンドウを表示しないのです。

0


@Quintin Robinsonの答えに加えて、それらがタスクマネージャに表示されないのは、それらが(通常)包括的なプロセスから実行されるためです。

あなたがより良い写真を与えるために、ダウンロードして Microsoftのプロセスエクスプローラを実行してから、実行中の “svchost.exe”プロセスの1つの上にマウスを置いてください。 。

その下で実行されているサービスがいくつか表示されます。

0


Windowsでのユーザーの操作はすべて Windowsstationsを介して行われます。 デフォルトでは、Windowsサービスは非インタラクティブステーションと「対話」します。 接続している放送局ではないので、何も出力されません。

この動作を変更するには、サービスのプロパティを変更し、[デスクトップとの対話をサービスに許可する]を有効にします。

あなたはこの hereについてもっと読むことができます。

0


サービスとして実行されるアプリケーション(またはサービスとして実行される他のアプリケーションによって起動されるアプリケーション)は、デフォルトでは表示されているデスクトップと対話できない別のデスクトップで実行されます。

サービスと対話できるようにしたい場合は、それに応じてサービスのプロパティを設定しました。

そうは言っても、Notepadで見ていることはサービスとは無関係です。

0


タイトルとURLをコピーしました