生産ラインの複数のサーバーで使用されるアプリケーションにwinpcapを使用しようとしています。これまでのところ私を悩ませているのは、Windows 7のデバイス命名規則です。これは、長い16進文字列であり、サーバーごとに異なります(つまり、\Device\NPF_{6F2E340D-FD43-4505-81C2-735716D02F15}
(Linuxでは、eth0、eth1、...の規則だけでこれが簡単になります)。各サーバーは5つのネットワークアダプターを使用するため、デバイス名を含む構成ファイルを保持したり、デバイス名の変更に対応するためにソースコードを変更したりする必要はありません。さらに、cat5フックアップは別々のネットワーク上の異なるデバイスに接続され、ポートの割り当ては図面ごとに常に同じである必要があります。
だから私の質問は、レジストリで何らかの方法で簡単に名前を変更できるなど、ウィンドウでこれらのデバイス名を管理する簡単な方法はありますか?レジストリを調べたところ、16進文字列は多くのエントリに表示され、フォルダ名にも表示されるため、変更するのが面倒になるかどうかはわかりませんでした。または、おそらく、winpcapを使用して、ネットワーク接続ページを介して設定できるデバイスのフレンドリ名を取得し、その方法で16進デバイス名の結果を取得する方法があります(findalldev_ex()と同様)。他の提案も歓迎します。
PS:bind()を使用してIPやポートにバインドしたり、winsockなどを使用したりできることは知っていますが、複数のネットワークアダプターが同じIPアドレスを持つ必要があり、Windowsで競合するため、他のデバイスとのアプリケーションとハードウェアのインターフェイスは複雑です。したがって、無差別モードのwinpcapオプションは、すべての生のメッセージを作成します。
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"
製品をインストールするときにバッチファイルで上記のコマンドを使用して、カスタムローカル構成ファイルを自動的に作成できます。