1. 程式人生 > 其它 >win10\win11下使用WMI操作網路介面卡

win10\win11下使用WMI操作網路介面卡

參考資料:

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 = new
ManagementObjectSearcher(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; }