win10\win11下使用WMI操作網路介面卡
阿新 • • 發佈:2021-10-21
參考資料:
https://devblogs.microsoft.com/scripting/renaming-network-adapters-by-using-powershell/
https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-networkadapterconfiguration
https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-networkadapter
使用win32-networkadapter獲取網絡卡資訊,修改在控制面中的名稱,啟用|禁用網絡卡
/// <summary> /// 網絡卡列表 /// </summary> public List<NetworkAdapter> NetWorkList() { string manage = @"SELECT * From Win32_NetworkAdapter WHERE Manufacturer!='Microsoft' AND NOT PNPDeviceID LIKE 'ROOT\\%' ";//查詢所有物理網絡卡 ManagementObjectSearcher searcher = newManagementObjectSearcher(manage); ManagementObjectCollection collection = searcher.Get(); List<NetworkAdapter> netWorkList = new List<NetworkAdapter>(); foreach (ManagementObject obj in collection) { bool enabled = Convert.ToBoolean(obj["NetEnabled"] ?? false);//是否使用 string connectionId = obj["NetConnectionID"]?.ToString();//網口名稱 string productName = obj["ProductName"]?.ToString();//網絡卡名稱 string Description = obj["Description"]?.ToString();//描述 string name = obj["Name"]?.ToString();//介面卡名稱 string manufacturer = obj["Manufacturer"]?.ToString();//製造商 if (productName == "Intel(R) PRO/1000 PT Dual Port Server Adapter")//test { obj["NetConnectionID"] = "test";//控制面板中網口的名稱 obj.Put();//嘗試重新命名 try { var a = obj.InvokeMethod("Disable", null);//嘗試禁用 } catch { } var ab = obj.InvokeMethod("Enable", null);//嘗試啟用 } netWorkList.Add(new NetworkAdapter() { ConnectionId = connectionId, Name = name, ProductName = productName, Description = Description, IsEnabled = enabled }); } return netWorkList; }