# Windowsでネットワークを使っているアプリを調べる方法

Windowsでいまどのアプリがネットワークを使っているかを知りたいときは、`Ctrl + Shift + Esc`でタスク マネージャーを開き、「プロセス」のまま「ネットワーク」列で並べ替え、続けてリソース モニター（`resmon`）を開いてプロセスごとの送信と受信の速度を見ます。この2つのツールが答えるのは「いま誰が帯域を使っているか」で、「今月のデータを誰が使ったか」「このプログラムはどこと通信しているか」とは別の問いです。

この3つの問いを分けておくと、当て推量がかなり減ります。ビデオ通話が重いならリアルタイムの表示を、モバイル ホットスポットのデータを使い切ったなら履歴を、見覚えのないプログラムなら接続先とファイルの場所を見ることになります。

## いま帯域を使っているのは誰か

最初に開くならタスク マネージャーが一番早いです。Microsoftは[「プロセス」タブ](https://learn.microsoft.com/en-us/troubleshoot/windows-server/support-tools/support-tools-task-manager)を、アプリとバックグラウンド プロセスの一覧にそれぞれのリソース使用量を並べたものとして説明しています。小さなウィンドウしか表示されない場合は「詳細」を選びます。「ネットワーク」列の見出しをクリックして一番忙しいプロセスを上に持ってきたら、30秒ほど眺めてください。ページの読み込み中に跳ね上がるのは気にしなくてよく、何もしていないのに上に居座り続けるプロセスが追うべき相手です。

この列は見た目ほど正確ではない理由が2つあります。表示しているのは合計ではなく速度なので、1時間前に5 GBをダウンロードしたプログラムもいまはゼロと表示されます。また、アダプターが複数あるPC（Wi-FiとVPN、あるいはHyper-VやWSLの仮想スイッチ）では、この数字が物理的な接続を実際に流れている量と一致しないことがあります。数字がおかしいと感じたら、リソース モニターでもっと細かく見ます。

スタート メニューか「ファイル名を指定して実行」に`resmon`と入力すれば開きます。

```cmd
resmon
```

「ネットワーク」タブの最初の表「ネットワーク活動のあるプロセス」には、最近何かを送受信したすべてのプロセスが、送信、受信、合計の速度（バイト/秒）とともに並びます。合計で並べ替えてください。Microsoftの[リソース モニターのガイド](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd883276(v=ws.10))が、このツールを便利にしている部分を説明しています。プロセスの横のチェック ボックスをオンにすると、下の表（「ネットワーク活動」「TCP接続」「待ち受けポート」）がそのプロセスだけに絞り込まれます。

どちらのツールにも共通の落とし穴があります。複数のWindowsサービスが1つの`svchost.exe`プロセスを共有しているため、`svchost.exe`が忙しいとわかっても、通信がどれかのサービスから来ていることまでしかわかりません。リソース モニターの「CPU」タブには「サービス」の表があり、選択した`svchost.exe`がどのサービスをホストしているかを確認できます。

## 期間中にデータを使ったのは誰か

リアルタイムの表示は、転送が終わればすべて忘れます。履歴については、Windowsが接続ごとの合計を「設定 › ネットワークとインターネット › ネットワークの詳細設定 › データ使用状況」に記録しています。Microsoftの[従量制課金接続の記事](https://support.microsoft.com/en-us/windows/experience/connectivity-networking/metered-connections-in-windows)が、データ制限を外したいときに案内しているのもこのページです。上部でアダプター（Wi-Fiまたはイーサネット）を選ぶと、その接続の使用量が表示され、その下に使ったアプリが並びます。

同じページで、その接続にデータ制限を設定することもできます。[2023年のWindows構成の更新](https://support.microsoft.com/en-us/servicing/os/configuration-updates/2023/08/september-26-2023-windows-configuration-update)で日単位と週単位の制限が追加され、制限をどれだけ超えたかも表示されるようになりました。制限そのものは何もブロックしません。上限に近づくとWindowsが警告し、Wi-Fiではさらに「従量制課金接続」のスイッチがオンのまま固定されます。これは次のセクションに関係してきます。

一覧に大きな「システム」やWindowsの項目が出るのは想定どおりです。更新、配信の最適化などの組み込みコンポーネントはここにまとめられるので、「システム」の数字が大きいことは、何かが隠れている証拠ではなく、Windows Updateと配信の最適化を見るべきだという手がかりです。

## 誰がどこに接続しているか

「このプログラムは何と通信しているのか」が問いなら、速度ではなく接続を見ます。リソース モニターで「TCP接続」を展開し、チェックを入れたプロセスの「リモート アドレス」と「リモート ポート」の列を読みます。コマンド プロンプトなら`netstat`で同じ一覧が得られます。

```cmd
netstat -ano
```

[netstatのリファレンス](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netstat)がスイッチを説明しています。`-a`はすべての接続と待ち受けポートを表示し、`-n`は名前を引かずにアドレスを数値のまま表示し、`-o`はプロセスID（PID）を追加します。`-b`を足すと接続ごとの実行ファイルが表示されますが、管理者としてプロンプトを実行していないと失敗します。

PIDをプログラム名に変換するには、フィルター付きで[`tasklist`](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/tasklist)を使います。4120はnetstatで見たPIDに置き換えてください。

```cmd
tasklist /fi "PID eq 4120" /svc
```

`/svc`スイッチはそのプロセス内のサービスを一覧表示するので、`svchost.exe`同士を見分けるのに使えます。PowerShellでは[`Get-NetTCPConnection`](https://learn.microsoft.com/en-us/powershell/module/nettcpip/get-nettcpconnection)がオブジェクトを返すので、1行で絞り込んでプロセス名と突き合わせられます。

```powershell
Get-NetTCPConnection -State Established |
  Select-Object LocalPort, RemoteAddress, RemotePort, OwningProcess,
    @{n='Process'; e={(Get-Process -Id $_.OwningProcess).ProcessName}} |
  Sort-Object Process
```

たいていのアプリはクラウドのホストと通信していて、そのホスト名からアプリはわかりません。接続一覧は、どのプロセスが動いているかを確かめるために使い、接続先の良し悪しの判断には使わないでください。

## よくある正当な原因

思いがけない通信の大半は、ソフトウェアが普段の仕事をしているだけです。まず確認したいのは次のものです。

| 発生源 | 表示される場所 | 抑える場所 |
| --- | --- | --- |
| Windows Updateと配信の最適化 | 配信の最適化をホストする`svchost.exe`、データ使用状況の「システム」 | 設定 › Windows Update › 詳細オプション › 配信の最適化 |
| OneDriveの同期 | `OneDrive.exe` | OneDrive設定 › 同期とバックアップ › 詳細設定 |
| Microsoft Storeアプリの更新 | Microsoft Store、`svchost.exe` | 従量制課金接続でStoreのダウンロードが一時停止 |
| クラウド バックアップ アプリ | バックアップ アプリ自身のプロセス | アプリの帯域幅やスケジュールの設定 |
| ゲーム ランチャー | Steam、Epic、Battle.netなど | ランチャーのダウンロード制限と更新スケジュール |
| ブラウザー | 複数の`msedge.exe`や`chrome.exe`プロセス | タブや拡張機能を閉じる。ブラウザー自身のタスク マネージャーも参照 |

配信の最適化はアップロードもするので、もう少し詳しく見ておく価値があります。[Microsoftのプライバシーのページ](https://support.microsoft.com/en-us/windows/privacy/windows-update-delivery-optimization-and-privacy)によれば、設定次第でPCは更新やアプリの一部をローカル ネットワークやインターネット上の他のPCに送ることがあり、個人的なコンテンツは送りません。「設定 › Windows Update › 詳細オプション › 配信の最適化」で、「他のデバイスからのダウンロードを許可する」を「ローカル ネットワーク上のデバイス」にするか、オフにします。どちらにしても更新はMicrosoftから届きます。[配信の最適化の記事](https://support.microsoft.com/en-us/windows/deployment/updates-lifecycle/delivery-optimization-in-windows)が「詳細オプション」のページを説明しています。バックグラウンドとフォアグラウンドのダウンロードに絶対値か割合で制限をかけられ、アップロード帯域幅にも制限をかけられ、1から500 GBの「月間アップロード制限」もあります。これらの制限は更新の自動ダウンロードにだけ適用され、自分で始めたダウンロードには効きません。「アクティビティ モニター」には今月のダウンロードが送信元別に、アップロードの合計とともに表示されるので、「自分のPCが更新を配っていたか」にそのまま答えが出ます。

OneDriveについては、Microsoftの[アップロードとダウンロードの速度の記事](https://support.microsoft.com/en-us/onedrive/change-the-onedrive-sync-app-upload-or-download-rate)にあるとおり、50から100,000 KB/秒の固定の上限を設定するか、アップロードでは「自動的に調整」を選べます。1時間だけ回線を空けたいなら、OneDriveアイコンから「同期の一時停止」を選ぶほうが簡単で、時間がたてば自動で再開します。OneDriveがディスクも埋めているなら、[OneDriveのストレージ ガイド](/ja/windows/blog/onedrive-free-up-space-windows)でファイル オンデマンドを扱っています。

ウィンドウを閉じても通信が続くブラウザーは、たいていバックグラウンドで動き続けています。[Edgeがバックグラウンドで動き続ける理由](/ja/windows/blog/edge-running-in-background)でその設定を順に説明しています。

## 従量制課金接続でバックグラウンドのダウンロードを抑える

ホットスポットや容量制限のあるプランを使っているなら、接続を従量制課金に設定するのがWindowsで一番広く効くスイッチです。「設定 › ネットワークとインターネット › Wi-Fi」で接続中のネットワークを選び、「従量制課金接続」をオンにします（イーサネットの場合、同じスイッチは「ネットワークとインターネット › イーサネット」にあります）。[Microsoft](https://support.microsoft.com/en-us/windows/experience/connectivity-networking/metered-connections-in-windows)によれば、Windows Updateは優先度の高い更新だけをダウンロードし、Microsoft Storeのダウンロードは一時停止することがあり、オフライン ファイルは自動で同期されないことがあります。従量制課金接続では、配信の最適化もインターネット上のPCへのアップロードをやめます。

その代わり、必要な更新も待たされます。無制限の接続に戻ったらスイッチをオフに戻してください。スイッチが灰色でオンのまま動かないなら、たいていはデータ制限が原因なので、「ネットワークの詳細設定 › データ使用状況」で削除します。それでもロックされているなら、組織がこの設定を管理しています。

## ファイアウォールでアプリを止めるなら慎重に

Windowsファイアウォールでアプリの通信を止めることはできますが、帯域の問題に最初に打つ手としては間違いです。更新プログラムを止めればセキュリティ修正を含む更新も止まり、同期アプリを止めればファイルがアップロード途中のまま残ることがあります。アプリ自身の帯域幅や一時停止の設定を優先してください。

どうしてもアプリの許可を外す必要があるなら、「Windowsセキュリティ › ファイアウォールとネットワーク保護 › ファイアウォールによるアプリケーションの許可」を開き、「設定の変更」を選び、アプリの横のチェック ボックスをオフにして「OK」を選びます。Microsoftの[ファイアウォールのガイダンス](https://support.microsoft.com/en-us/windows/security/firewall/risks-of-allowing-apps-through-windows-firewall)は、必要なときだけアプリを許可し、見覚えのないアプリは決して許可しないよう求めています。変更した内容はメモしておき、アプリが思わぬ形で動かなくなったらチェックを戻せるようにしておきましょう。

## 疑うべきとき

忙しいプロセスはたいてい問題ありません。詳しく調べるべきなのは、発行元がない、システム ファイルの名前を1文字違いでまねている、置き場所が合わない、といった場合です。タスク マネージャーでプロセスを右クリックして「ファイルの場所を開く」を選びます。システム ファイルが`C:\Windows\System32`にあるのは普通ですが、同じ名前のものが`AppData\Local\Temp`やダウンロード フォルダーから動いているのは普通ではありません。PCがアイドル状態なのに、インストールした覚えのないプログラムがアップロードを続けている、というのが真剣に受け止めるべきパターンです。

その場合は「Windowsセキュリティ › ウイルスと脅威の防止」を開いてクイック スキャンを実行します。それでも不安なら「スキャンのオプション › Microsoft Defenderウイルス対策 (オフライン スキャン)」を選びます。[Microsoftによれば](https://support.microsoft.com/en-us/windows/security/threat-malware-protection/virus-and-threat-protection-in-the-windows-security-app)、PCが再起動してWindowsの読み込み前にスキャンするので、先に作業を保存してください。結果は「保護の履歴」に表示されます。その過程で見覚えのないプロセスを片っ端から終了しないでください。その多くはWindowsのもので、[CPU使用率のガイド](/ja/windows/blog/windows-high-cpu-usage)で、プロセスを止める前にたどる方法を説明しています。

## Moleの役割

Moleの「ステータス」ページは、CPU、メモリ、ディスクと並べてネットワークの動きを表示します。「ネットワーク」タイルには現在のダウンロード速度、その下にアップロード速度、両方の短い履歴、そしてWi-Fi、イーサネット、VPNのどれにつながっているかが出ます。カウンターは物理アダプターから取っているので、表示されるのはPC全体の通信量です。Moleはネットワークの通信量をプロセスごとに分けることはせず、プロセス一覧はネットワークではなく名前、PID、CPU、メモリで並べ替えます。

プロセス一覧が役に立つのは次の段階です。アプリ名、プロセス名、PID（たとえば`netstat -ano`からコピーしたPID）で検索すると、そのプロセスがどのアプリのものかがわかり、プロセスを開けば親プロセス、サービス、起動元、待ち受けポートを確認できます。アプリごとの帯域幅の数字そのものは、引き続きタスク マネージャーとリソース モニターで見ます。ページの詳細は[ヘルプの「ステータス」セクション](/ja/windows/help)で説明しています。

## よくある質問

### 回線が忙しいのに、タスク マネージャーではどのアプリも0 Mbpsと表示されるのはなぜですか？

「ネットワーク」列はリアルタイムの速度で、VPNや仮想スイッチがあると、通信を実際に運んでいるのとは別のアダプターを反映していることがあります。リソース モニターの「ネットワーク」タブを確認してください。最近送受信のあったすべてのプロセスが表示されます。

### データ使用状況に「システム」としか出ないとき、何がデータを使っていますか？

「システム」はWindows Updateや配信の最適化などのWindowsコンポーネントをまとめたものです。配信の最適化の「アクティビティ モニター」で今月のダウンロードとアップロードを確認し、アップロードが多ければ他のデバイスとの共有を制限するかオフにしてください。

### Windowsで1つのアプリだけのデータを制限できますか？

設定のデータ制限は接続全体に適用されます。1つのアプリについては、OneDriveやたいていのゲーム ランチャーにあるようなアプリ自身の帯域幅設定を使うか、回線が必要な間だけ一時停止してください。

### 接続を従量制課金に設定すると、バックグラウンドの通信はすべて止まりますか？

いいえ。Windows Update、Microsoft Store、配信の最適化の動きは減り、一部のアプリも自分の使用量を減らしますが、ほかのプログラムは全速でダウンロードを続けられます。


Canonical: https://mole.fit/ja/windows/blog/what-app-is-using-network-windows
