如何使用C#启用已禁用的无线网卡

ped*_*ree 6 c# wmi networking adapter

我有一个问题,我需要启用已经禁用的卡,WMI NetworkAdapter上的搜索器不返回该对象.

我可以想到一种可能的方法来做到这一点,但我一直无法让它工作,那就是创建一个使用它作为构造函数名称的managementObject.但这只是抛出异常

{\\.\root\CIMV2:Win32_NetworkAdapter.NetConnectionID='Wireless Network Connection'}

另一种方法是封装netsh并启用设备,这有点难看,或者使用shell32/dll"启用"来执行相同操作,再次,只传递名称.我已经从注册表扫描中获取名称HKLM\SYSTEM\CurrentControlSet\Network并查找MediaType = 2以获取无线设备的字符串列表.如果我在启用适配器的同时运行应用程序,那么一切都很好,因为我可以获得无线设备的networkObject,但是如果应用程序在禁用无线设备时启动,则一切都会崩溃.

谢谢

编辑:这是我喜欢的代码,但没有去:(

using System;
using System.Management;
class Sample
{
    public static int Main(string[] args)
    {
        ManagementObject mObj = new ManagementObject("\\\\.\\root\\CIMV2:Win32_NetworkAdapter.NetConnectionID=\"Wireless Network Connection\"");
        mObj.InvokeMethod("Enable", null);
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

Gre*_*reg 2

该方法本质上是使用 C# 来利用 WMI 和Win32_NetworkAdapter类。它应该有内置的方法:

  • 使能够
  • 禁用

这样您就可以在选定的界面上执行您的命令。

您可以通过以下方式实现:

SelectQuery query = new SelectQuery("Win32_NetworkAdapter", "NetConnectionStatus=2");
ManagementObjectSearcher search = new ManagementObjectSearcher(query);
foreach(ManagementObject result in search.Get())
{
    NetworkAdapter adapter = new NetworkAdapter(result);

    // Identify the adapter you wish to disable here. 
    // In particular, check the AdapterType and 
    // Description properties.

    // Here, we're selecting the LAN adapters.
    if (adapter.AdapterType.Equals("Ethernet 802.3")) 
    {
        adapter.Disable();
    }
}
Run Code Online (Sandbox Code Playgroud)

有一个博客实际上概述了这样的任务;它定义了如何围绕 WMI 类创建包装器。

另一种解决方案可能是也使用( ControlServiceadvapi32)。

[DllImport("advapi32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool    ControlService(IntPtr hService, SERVICE_CONTROL dwControl, ref SERVICE_STATUS lpServiceStatus);
Run Code Online (Sandbox Code Playgroud)

希望其中一种方法有帮助..

  • 您能否让我知道我们需要为“NetworkAdapter”类包含的名称空间 (5认同)
  • 您需要生成 NetworkAdapter.cs 类。打开 Visual Studio 工具命令提示符。运行“mgmtclassgen Win32_NetworkAdapter -p NetworkAdapter.cs” (2认同)