3

给定设备描述(即出现在“设备属性 -> 连接方式:”文本框中的字符串),我们如何获得网络接口名称(即出现在“网络连接”对话框中的名称)?

我们必须使用纯 C/C++ 语言或通过一些标准命令行工具(例如 netsh、ipconfig...)或两者的组合来完成。

我们不能使用 .NET API,因为部署问题(应用程序必须在没有 .NET Framework 的嵌入式 XP 上运行)。

SDK API GetIfTable 和 GetIfEntry 看起来很有希望,但在我们的系统上,所有 MIB_IFROW 字段都已正确填写,除了 "wszName" 字段未初始化。

4

3 回答 3

1

我能够通过注册表做到这一点。使用提供 IP_ADAPTER_INFO 输出的 GetAdaptersInfo(),获取 AdapterName 字符串。这应该是适配器的 GUID。对于(至少为 ipv4),在 HKLM\SYSTEM\CurrentControlSet\Control\Network{4D36E972-E325-11CE-BFC1-08002BE10318}\{ INSERT GUID HERE }\Connection 下,值Name应包含“友好”网络名称。

于 2009-10-07T00:04:55.600 回答
0

最好的办法是使用统称为“ IP Helper ”的 Win32 API 调用。这将为您提供从 CLI 调用“ipconfig”可以获得的所有相同信息。

特别是,我将首先查看“ GetAdaptersInfo ”函数。

当然,由于 Win32 API 的这一部分,您可以使用纯 C/C++ 而无需解析来自外部实用程序的输出。

于 2008-12-22T20:32:41.440 回答
0

我将不得不仔细检查,但我认为这可能在某个地方的注册表中......我会回到这个。

hklm/系统/currentcontrolset/控制/网络

可能有帮助。

我没有找到我想的,对不起

编辑这也可能有帮助:

http://www.java2s.com/Tutorial/CSharp/0520__Windows/Getthenetworkdevicenamedeviceservicename.htm

特别是:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\

我不知道这是否可以保证未来,或者不是“批准”的方法,但它似乎有你需要的信息。

于 2008-12-19T15:27:52.570 回答