2010-09-20 35 views
0

如何獲取有關係統中所有網絡適配器的信息? 名稱,製造商,位置(PCI,slot2),驅動程序版本。 其實我使用WMI檢索名稱和製造商,但找不到位置和驅動程序版本。 我只需要C++解決方案而不是MFC/clr。 winapi功能? wmi(想念什麼)? 另外我需要檢索系統上的.NET版本。如何在C++中獲取有關網絡適配器的信息?

+0

不要將多個問題(.NET版本和網絡適配器)混合在一起,這對於可搜索性而言是不利的,並且會導致只回答兩個問題之一的答案。改爲提出單獨的問題。 – 2010-09-20 02:11:49

+0

好的..我會在將來更加小心.. – shake 2010-09-20 06:26:30

回答

1

關於你第二個請求:「我需要在系統中檢索.NET版本」

這可以通過Unmanaged Hosting 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。一旦你有完整的驅動程序路徑,你可能能夠通過另一種機制獲得文件的版本。

+0

不錯,謝謝你。我通過WMI找到了.Net和systemDrivers。現在我只需要到網絡適配器(PCI,slot3 ...)的位置,如果這個信息是可用的。 – shake 2010-09-20 06:32:35

0

我不知道WMI是否暴露了這個問題,但是位置信息是通過SPARP_LOCATION_INFORMATION通過SetupAPI函數SetupDiGetDeviceRegistryProperty從註冊表中獲取的。

相關問題