WindowsでゴーストネットワークアダプターをクリアしてIPアドレスの競合を修正する方法
Windowsで隠された、あるいはゴースト状態のネットワークアダプターを扱うのは少々面倒ですが、ハードウェアの交換、P2V移行、あるいは単一のNICのVLAN設定をいじるといった作業を行う場合、よくある頭痛の種です。ここでの主な問題は、Windowsがデバイスマネージャーには表示されなくなってもバックグラウンドで動作し続ける、古い、切断されたネットワークデバイスをそのまま保持してしまう傾向があることです。なぜこれが問題になるのでしょうか?これらのゴーストデバイスにはIP設定が割り当てられたままになっている場合があり、例えば古い固定IPを再割り当てしようとすると、「入力したIPアドレスは既に別のアダプターに割り当てられています」といったエラーが表示されてブロックされてしまうからです。特にネットワーク設定を手動で設定し、スムーズに動作すると期待していた場合、非常にイライラさせられます。本当に役立つのは、これらのゴーストデバイスを特定し、適切に削除する方法を知ることです。再起動やデバイスの無効化だけで済むとは限らず、PowerShellコマンドやレジストリの微調整が必要になることもあります。このガイドでは、目に見えないネットワーク アダプターを発見して削除する方法など、重要な手順を詳しく説明します。これにより、新しいネットワーク セットアップで、エラーなく適切な IP を取得できるようになります。 —
IPアドレスはすでに別のネットワークアダプタに割り当てられています
Windows で「アドレスは既に割り当て済みです」というエラーが表示されたり、PowerShell で「オブジェクトは既に存在します」というエラーが表示されたりするのは、通常、古い NIC を削除したと思っても、ゴーストデバイスが IP アドレスを「保持」したままになっているためです。よくあるシナリオとしては、物理サーバーを仮想マシンに移行したり、ハイパーバイザーで NIC を交換したりする場合が挙げられます。古い設定が残っていると、Windows が混乱し、新しい割り当てがブロックされてしまいます。例えば VMware では、E1000 から VMXNet3 仮想 NIC に移行してもすべてがリセットされない場合があり、Windows は削除されたデバイスに関連付けられた古い IP アドレスを記憶しています。一部の環境では、この問題は再起動後またはネットワークのリセット後にのみ発生するため、トラブルシューティングが少々面倒です。根本的な原因は、切断された NIC が必ずしも自動的に消去されず、Windows で「存在しない」デバイスとして残ることです。解決策は?これらの非表示のアダプターを見つけて削除することです。—
Windowsデバイスマネージャーで非表示の(存在しない)ネットワークアダプターを表示する
これらのゴースト アダプターを表示するには、存在しないハードウェアの表示を有効にする必要があります。方法は次のとおりです。-コマンド プロンプトを管理者として開きます (右クリックし、[管理者として実行])。- 次のように入力しset devmgr_show_nonpresent_devices=1て Enter キーを押します。- 次のようにデバイス マネージャーを実行します。デバイス マネージャーで、 [表示] -> [非表示のデバイスのdevmgmt.msc表示] をクリックします。[ネットワーク アダプター]を展開します。灰色のアイコンがいくつか表示されます。これらは、古い、切断された NIC です。削除する NIC (特に接続されていない、または使用されていない場合) を右クリックし、[デバイスのアンインストール]を選択します。必要に応じて、今後必要ないことが確実な場合は、[このデバイスのドライバー ソフトウェアを削除する] をオンにします。Windows はこれらのアダプターを登録したままにして、新しいデバイスでの IP の変更を防ぐことが多いため、この方法は重要です。—
PowerShell と CMD を使用して非表示または存在しないネットワーク アダプターを削除する方法
コマンドラインを好む場合、PowerShell にはこれらのゴーストを正確に特定して排除するための便利なコマンドがいくつかあります。 – 未使用または存在しないネットワーク デバイスを一覧表示するには: Get-PnpDevice -Class net | Where-Object { $_. Status -eq 'Unknown' } | Select-Object FriendlyName, InstanceId このコマンドは、Windows が存在として認識しないデバイス (通常は、使用されなくなったデッド NIC または仮想アダプター) を表示します。 – 特定の孤立したデバイスを削除するには、上記の InstanceId を使用します: powershell $InstanceId = “PCI\VEN_8086&DEV_10D3&SUBSYS_07D015AD&REV_00\000C29FFFF66A80700” $RemoveKey = “HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId” Get-Item $RemoveKey | ForEach-Object { Get-ItemProperty -Path $_. PSPath } | ForEach-Object { Remove-ItemProperty -Path $RemoveKey -Name $_. PSChildName -Verbose } – または、すべての不明なネットワーク デバイスをクリアするには (注意してください): powershell $Devs = Get-PnpDevice -Class net | Where-Object { $_. Status -eq ‘Unknown’ } foreach ($Dev in $Devs) { $InstanceId = $Dev. InstanceId $RemoveKey = “HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId” Get-Item -Path $RemoveKey | ForEach-Object { Get-ItemProperty -Path $_. PSPath } | ForEach-Object { Remove-ItemProperty -Path $RemoveKey -Name $_. PSChildName -Verbose } } – より直接的な方法として、Windows 独自のユーティリティDevcon.exe を使用してデバイスを削除できます。 cmd devcon findall =net devcon -r remove “@PCI\VEN_8086&DEV_10D3&SUBSYS_07D015AD&REV_00\000C29FFFF66A80700” また、Windows 10/11 では、次の操作も使用できますpnputil。 – すべてのネットワーク デバイスを一覧表示します。 pnputil /enum-devices /class net – InstanceID でデバイスを削除します。 pnputil /remove-device "PCI\VEN_8086&DEV_10D3&SUBSYS_07D015AD&REV_00\000C29FFFF66A80700" その後、デバイス マネージャーに戻って[ハードウェア変更のスキャン]をクリックすることを忘れないでください。これにより、システムのデバイス リストが更新され、残りのデータが消去されます。 —
レジストリから古いネットワーク設定を削除する
デバイスを削除した後でも、Windows が古い IP 情報をキャッシュしたままにすることがあります。これを完全にクリアするには、レジストリを調べる必要があります。レジストリ エディターを開き( を押しWin + R、 と入力regedit)、次の場所に移動します。 – HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces ここで、各サブキーはネットワーク インターフェイスの GUID です。IPAddress 値を確認します。古い IP がまだ保持されている場合は、そのキー全体を削除するか、IP 値をクリアします。また、次の場所も確認すると良いでしょう。 – HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Adapters および – HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network ただし、レジストリ エントリを混乱させるとネットワーク機能に支障をきたす可能性があるため、注意が必要です。何かを削除する前に、必ずレジストリをバックアップしてください。クリーンアップが完了したら、PC を再起動して古い IP とゴースト デバイスがすべて削除されていることを確認し、新しい静的 IP を再度割り当ててみてください。—
まとめ
ゴーストネットワークアダプターの扱いは少々面倒ですが、PowerShell や regedit を使って隠しデバイスを表示・削除する方法を一度覚えてしまえば、簡単に扱えます。通常、一番難しいのは、どれが何なのかを突き止め、現在の設定を壊さずに確実に削除することです。また、作業が終わったら Windows のネットワーク設定をリセットするのも良いでしょう。「設定」→「ネットワークとインターネット」→「ネットワークのリセット」からリセットできます。ネットワークアダプターが正常に動作しなかったり、正常に表示されない場合に役立ちます。このプロセスは少しやり過ぎに思えるかもしれません。もちろん Windows は必要以上に面倒にしているわけですが、実際には、頑固な IP 競合や隠しデバイスを解消してくれます。—
まとめ
- デバイス マネージャーで存在しないデバイスの表示を有効にする
- ゴーストネットワークアダプタを識別してアンインストールする
- PowerShell または devcon を使用して、残ったデバイスエントリを削除します。
- レジストリから古いIP設定をクリアする
- 再起動してネットワークIPを再設定する
最後に
これでIPアドレスの競合が解決する人が現れるといいですね。少し面倒ですが、隠しデバイスがなくなるとすべてがスムーズになります。これで、対応に追われている人の時間も数時間短縮されることを願っています。