web-dev-qa-db-ja.com

Windows 7タスクマネージャー:アプリケーション、プロセス、およびサービスの違い

Windows 7タスクマネージャーに一覧表示されている、アプリケーション、プロセス、およびサービスの違いを知りたいのですが。 UNIX/Linuxでは、これらの用語は次のように機能します。プロセスとは、メモリにロードされて実行されているという意味で実行されている実行可能ファイルを指します。同じ実行可能ファイルを複数回実行して、メモリ内に複数のプロセスを作成し、同じ実行可能ファイル。アプリケーションは通常、関連するグラフィカルユーザーインターフェイスを持つプロセスです。サービスは通常、GUIを表示せず、バックグラウンドで実行されるヘッドレスプロセスです。

Windows 7 TaskManagerアプリケーションが上記のUNIX/Linuxと同じようにこれらの用語を使用しているかどうかを知りたいのですが。

ありがとう。

2
John Sonderson

ここで提起された質問のほとんどはうまく答えられます ここ だから私は今古い地面をカバーするつもりはありません。

svchost.exeとして実行されないサービスの場合、他の非サービスプロセスとの違いは何ですか?

サービスが他のプロセスと異なる唯一の点は、何かに応答するためにサービスが開いたままになることです。それらについて他に何も違いはありませんが、これはそれらがしばしば特定の特性を持っていることを意味します。通常、GUIを必要としない(または必要としない)ため、通常はCLIアプリです。ホストプロセスがそれらを管理することを意図している場合は、それらはDLLになることもあります(svchost.exeなど)。非常に一般的に言えば、a DLLは、エントリポイントを持たないコードです(つまり、直接実行することはできませんが、プログラムはそれをメモリにロードしてコードを実行できます)。

これをよりよく説明するために、新しい用語であるスレッドを導入する必要があります。プロセスは新しいスレッドを生成できます。スレッドについて理解する主なことは、各スレッドが独自の実行ポインターを取得し、親プロセス内のプロセスのように機能することです。 svchost.exeは、サービスを登録できるプロセスです。これを行うと、サービスはsvchost.exeプロセス内のスレッドとして実行されます。スレッドについて理解しておくべきもう1つの重要なことは、スレッドがタスクマネージャーに表示されないことです(親プロセスのみが表示されます)。

実際には、システムにはsvchost.exeのインスタンスが2つあります。 1つはユーザーモードプロセスで、もう1つはSYSTEMが所有します。 SYSTEMコピーを使用すると、誰もがログインする前に実行されるサービスが許可されます(これは、ほとんどのサービスが実行できるようにしたいことです)。

Svchost.exeがサービスをどう処理するかを知るためには、DLLのように機能する必要があります。これは、DLLMainを実装する必要があることを意味します。さらに、svchost.exeが発生するイベント(SERVICE_CONTROL_STOP、SERVICE_CONTROL_SHUTDOWN、SERVICE_CONTROL_PAUSE、SERVICE_CONTROL_CONTINUE、SERVICE_CONTROL_INTERROGATE)に応答するHandlerExメソッドも必要です。

サービスがそれらを実装している場合は、それを認識するためにsvchost.exeに登録する必要があります。これは、アプリケーション sc.exe および installutil.exe で実行されます。

すべてがどのように機能するかを説明したので、これの多くは新しいバージョンのWindowsでは非推奨になっていることに言及する必要があります。現在提案されているアプローチは、サービス開発者が独自のホストプロセス(独自のsvchost.exe)も作成することだと思います。これは、svchost.exeが、マルウェアの開始以来、マルウェアの完全な隠れ場所であったためです。大多数のユーザーは、svchost.exeを使用してサービスをreg\unregする方法を知らず、サービス(サービスマネージャー)を表示する方法さえ知っているだけです。

開発者がsvchost.exeに接続することを許可しないということは、開発者がサービス用に新しいプロセスを作成する必要があることを意味します。つまり、この新しいプロセスがタスクマネージャーに表示されます。それでも、最新バージョンのWindowsでも、sc.exeを使用する古い方法は下位互換性のために機能すると思います。 WindowsユーザーがDOS以降に存在するバグにまだ対処していることを考えると、それはまだ長い間可能であると思います。公式には、svchost.exeは現在Windowsサービス専用です。

3
krowe

さまざまな種類のプログラムについての理解は、Windowsに非常によく対応しています。実行可能ファイルを起動してプロセスを作成すると、アプリケーションはウィンドウを表示するプロセスです。

ただし、サービスは単なるウィンドウのないプロセスではありません。 (私は専門家ではありませんが、Windowsで見たものからさらにいくつかの情報があります。)

ウィンドウレスプロセスは、いつでもウィンドウを表示できますが、サービスは デスクトップから分離されています です。

コンピュータで自動的に起動するようにサービスを簡単に設定できます。サービスを停止すると、プロセスを強制終了するのではなく、正常にシャットダウンするのに時間がかかるようです。

[サービス]に移動すると、いくつかのサービスが一覧表示されますが、ステータスが停止しています-Windowsは、そのような停止したアプリケーションを追跡しません!

サービスプログラムを開くと、サービスのプロパティで、特定のコマンドライン引数を使用して実行可能ファイルを実行することが指定されていることがわかります。

同じ実行可能ファイルを実行する複数のプロセスを持つことができますが、重複したサービスを見たことがありません。 PIDでサービスを並べ替えると、1つのプロセスから多くのサービスを実行できることがわかります。

1
Carl Walsh