如何在c++中获取有关网络适配器的信息?
如何获取系统中所有网络适配器的信息? 名称、制造商、位置(PCI、插槽2)、驱动程序版本。 实际上,我使用 WMI 检索了名称和制造商,但找不到位置和驱动程序版本。 我只需要 C++ 解决方案而不是 MFC/clr。 winapi函数? wmi(缺少一些东西)? 我还需要检索系统上的.NET 版本。
How to get information about all network adapters in system?
Name, Manufacturer, Location(PCI, slot2), Driver Version.
Actually i retrieved Name and Manufacturer with WMI but i can't find Location and Driver version.
I need only c++ solutions not MFC/clr.
winapi function? wmi (missing something)?
Also i need to retrieve .NET version on system.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
参考您的第二个请求:“我需要在系统上检索 .NET 版本”
这可以通过 非托管托管 API。如果您使用的是 .NET 4.0,则可以使用新的
ICLRMetaHost
接口。EnumerateInstalledRuntimes()
函数将给出你们当前都安装了 .NET 运行时。您也可以使用 WMI 来完成此操作,但这需要更多的工作。安装 .NET 时,会创建一个 WMI
Win32_Product
对象。使用 WMI Studio< /a> 您可以连接到root\CIMV2
(Windows 7),导航到CIM_Product\Win32_Product
,并查看所有 MSI 安装的应用程序的所有 WMI 对象。您将能够在那里找到框架的所有已安装实例,并确定如何在代码中识别它们。只需提及您可以从 WMI 获得与网络适配器驱动程序相关的内容。我假设您正在使用
Win32_NetworkAdapter
对象。该对象的ServiceName
属性与表示用于该适配器的驱动程序的Win32_SystemDriver
对象的Name
属性相关联。Win32_SystemDriver
对象没有版本信息,但它们确实具有实际文件二进制文件的路径。例如,我的无线网络适配器正在使用此驱动程序,C:\Windows\system32\DRIVERS\athr.sys
。一旦获得完整的驱动程序路径,您就可以通过另一种机制获取文件的版本。In reference to your second request: 'i need to retrieve .NET version on system'
This can be done via the Unmanaged Hosting API. If you are using .NET 4.0 then you can use the new
ICLRMetaHost
interface. TheEnumerateInstalledRuntimes()
function will give you all currently installed .NET runtimes.You could also do this using WMI but it will require some more work. When installing .NET a WMI
Win32_Product
object is created. Using WMI Studio you can connect toroot\CIMV2
(Windows 7), navigate toCIM_Product\Win32_Product
, and view all WMI objects for all MSI installed applications. You will be able to find all installed instances of the framework there and determine how you want to identify them in code.Just to mention what you can get from WMI with respect to the driver for your network adapter. I assume you are using the
Win32_NetworkAdapter
objects. TheServiceName
property on that object is tied to theName
property of theWin32_SystemDriver
object that represents the driver being used for that adapter.Win32_SystemDriver
objects do have not version information but they do have paths to the actual file binary. For instance my wireless network adapter is using this driver,C:\Windows\system32\DRIVERS\athr.sys
. Once you have the full driver path you may be able to get the version of the file via another mechanism.我不知道 WMI 是否公开了这一点,但位置信息是通过 SetupAPI 函数从注册表获取的 SetupDiGetDeviceRegistryProperty 与 SPDRP_LOCATION_INFORMATION。
I don't know if WMI exposes this or not, but the location information is obtained from the registry via the SetupAPI function SetupDiGetDeviceRegistryProperty with SPDRP_LOCATION_INFORMATION.