.net - 如何在 C++ 中获取有关网络适配器的信息?

标签 .net c++ winapi networking wmi

如何获取系统中所有网络适配器的信息? 名称、制造商、位置(PCI、插槽 2)、驱动程序版本。 实际上我用 WMI 检索了名称和制造商,但我找不到位置和驱动程序版本。 我只需要 C++ 解决方案而不是 MFC/clr。 winapi函数? wmi(遗漏了什么)? 我还需要检索系统上的 .NET 版本。

最佳答案

关于您的第二个请求:“我需要检索系统上的 .NET 版本”

这可以通过 Unmanaged Hosting API 完成.如果您使用的是 .NET 4.0,则可以使用新的 ICLRMetaHost 接口(interface)。 EnumerateInstalledRuntimes()函数将为您提供所有当前安装的 .NET 运行时。

您也可以使用 WMI 来完成此操作,但需要做更多的工作。安装 .NET 时,会创建一个 WMI Win32_Product 对象。使用WMI Studio您可以连接到 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。获得完整的驱动程序路径后,您可以通过另一种机制获取文件的版本。

关于.net - 如何在 C++ 中获取有关网络适配器的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3748127/

相关文章:

.net - 如何在.net框架4.0中压缩文件夹

c# - DecodePixelWidth 与 DecodePixelWidth 之间有什么区别?缩放变换?

c++ - 在 C++ 中复制数组 - 引用

c++ - 在 C++ 中访问参数包的内部变量

c# - 应用程序 session 的用户设置

.net - Visual Studio : how to debug a library with an external executable?

c++ - 我如何发出编译和运行 C++ 函数的 LLVM IR

c++ - VS2010 C代码——字符串池

Linux/Windows 中的 C/C++ 内存使用 API

c - WIN32 C 正确使用 SetWindowLongPtr 和 GetWindowLongPtr