簡體   English   中英

如何在C ++中獲取有關網絡適配器的信息?

[英]How to get information about network adapters in c++?

如何獲取有關系統中所有網絡適配器的信息? 名稱,制造商,位置(PCI,插槽2),驅動程序版本。 實際上,我使用WMI檢索了名稱和制造商,但找不到位置和驅動程序版本。 我只需要c ++解決方案,而無需MFC / clr。 winapi功能? WMI(缺少什么)? 我還需要檢索系統上的.NET版本。

關於第二個請求:“我需要在系統上檢索.NET版本”

這可以通過非托管主機API來完成。 如果使用的是.NET 4.0,則可以使用新的ICLRMetaHost接口。 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 擁有完整的驅動程序路徑后,您也許可以通過其他機制來獲取文件的版本。

我不知道WMI是否公開此信息,但是位置信息是通過帶有SPDRP_LOCATION_INFORMATION的SetupAPI函數SetupDiGetDeviceRegistryProperty從注冊表中獲取的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM