私は、生産ラインの複数のサーバーで使用されるアプリケーションに winpcap を使用しようとしています。今のところ、私を悩ませているのは、Windows 7 のデバイス命名規則です。これは長い 16 進文字列で、サーバーごとに異なります (つまり\Device\NPF_{6F2E340D-FD43-4505-81C2-735716D02F15}
、Linux では eth0、eth1、... という規則でこれが簡単になります)。各サーバーは 5 つのネットワーク アダプターを使用するので、デバイス名を含む構成ファイルを保持したり、デバイス名の変更に対応するためにソース コードを変更したりする必要はないようにしたいと思います。さらに、cat5 フックアップは別のネットワーク上の異なるデバイスに接続され、ポートの割り当ては図面ごとに常に同じである必要があります。
そこで質問なのですが、Windows でこれらのデバイス名を管理する簡単な方法はありますか? たとえば、レジストリで簡単に名前を変更できるような方法はありますか? レジストリを調べてみると、16 進文字列が多くのエントリに表示され、フォルダー名にも表示されるので、変更が面倒になるかどうかわかりませんでした。あるいは、ネットワーク接続ページから設定できるデバイスのフレンドリ名を winpcap で取得し、その方法で 16 進デバイス名の結果を取得する方法があるでしょうか (findalldev_ex() と同様)。その他の提案も歓迎します。
PS: IP とポートにバインドするために bind() を使用したり、winsock などを使用したりできることはわかっていますが、複数のネットワーク アダプターが同じ IP アドレスを持つ必要があり、それが Windows で競合するため、アプリケーションとハードウェアの他のデバイスへのインターフェイスは複雑になります。そのため、プロミスキャス モードの winpcap オプションによってすべての生のメッセージが作成されます。
答え1
ネットワーク接続の「接続名」を取得するにはどうすればよいですか?
Windows では、getmac
「接続名」(フレンドリ名) と「トランスポート名」(GUID) の両方を取得するために使用できます。
getmac /fo csv /v
出力例:
"Connection Name","Network Adapter","Physical Address","Transport Name"
"Local Area Connection","Realtek PCIe GBE Family Controller","F0-BF-97-62-95-5D","\Device\Tcpip_{45B9E87F-83FB-4829-A751-6B62656CC1A8}"
"Wireless Network Connection","Atheros AR9285 Wireless Network Adapter","CC-AF-78-B2-4C-09","\Device\Tcpip_{B108BB0B-CCDC-4ACA-9DFE-5A2F17BC138D}"
"Bluetooth Network Connection","Bluetooth Device (Personal Area Network)","CC-AF-78-B2-4C-0A","Media disconnected"
接続の名前を変更するにはどうすればよいですか?
netsh
ネットワーク接続の名前を変更するために使用できます。
netsh interface set interface name="Local Area Connection" newname="New Name"
これらすべてを自動化するにはどうすればよいでしょうか?
製品をインストールするときに上記のコマンドをバッチ ファイルで使用すると、カスタム ローカル構成ファイルが自動的に作成されます。
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- ゲットマック- ローカルまたはネットワーク全体の各コンピューターのすべてのネットワーク カードのメディア アクセス制御 (MAC) アドレスと、各アドレスに関連付けられているネットワーク プロトコルのリストを表示します。
- ネットシュ- ネットワーク インターフェイス、Windows ファイアウォール、ルーティング、リモート アクセスを構成します。