Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-如何以编程方式关闭Windows 8 10的WiFi_C#_Windows_Wifi_Disable - Fatal编程技术网

C#-如何以编程方式关闭Windows 8 10的WiFi

C#-如何以编程方式关闭Windows 8 10的WiFi,c#,windows,wifi,disable,C#,Windows,Wifi,Disable,我正在写一个禁用WiFi的应用程序。这不能通过使用WMI禁用网络适配器,或调用netsh等来完成。对于Windows 10,我有以下代码正在工作。如何对Windows 8执行同样的操作 using Windows.Devices.Radios; public async void TurnWifiOff() { await Radio.RequestAccessAsync(); var radios = await Radio.GetRadiosAsync(); fo

我正在写一个禁用WiFi的应用程序。这不能通过使用WMI禁用网络适配器,或调用netsh等来完成。对于Windows 10,我有以下代码正在工作。如何对Windows 8执行同样的操作

using Windows.Devices.Radios;

public async void TurnWifiOff()
{
    await Radio.RequestAccessAsync();
    var radios = await Radio.GetRadiosAsync();

    foreach (var radio in radios)
    {
        if (radio.Kind == RadioKind.WiFi)
        {
            await radio.SetStateAsync(RadioState.Off);
        }
    }
}

迈克·佩特里琴科,谢谢你的提示。我找到了一个基于CodePlex提供的“wlanapi.dll”的解决方案:在向项目中添加了两个文件“Interop.cs”和“wlanapi.cs”之后,以下代码完成了工作

using NativeWifi;
using System.Runtime.InteropServices;

{

    WlanClient client = new WlanClient();
    foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
    {
        IntPtr radioStatePtr = new IntPtr(0L);
        try
        {
            Wlan.WlanPhyRadioState radioState = new Wlan.WlanPhyRadioState();
            radioState.dwPhyIndex = 0;
            radioState.dot11HardwareRadioState = Wlan.Dot11RadioState.On;
            radioState.dot11SoftwareRadioState = Wlan.Dot11RadioState.Off; //In this place we set WiFi to be enabled or disabled

            radioStatePtr = Marshal.AllocHGlobal(Marshal.SizeOf(radioState));
            Marshal.StructureToPtr(radioState, radioStatePtr, false);

            Wlan.ThrowIfError(
                Wlan.WlanSetInterface(
                            client.clientHandle,
                            wlanIface.InterfaceGuid,
                            Wlan.WlanIntfOpcode.RadioState,
                            (uint)Marshal.SizeOf(typeof(Wlan.WlanPhyRadioState)),
                            radioStatePtr,
                            IntPtr.Zero));
        }
        finally
        {
            if (radioStatePtr.ToInt64() != 0)
                Marshal.FreeHGlobal(radioStatePtr);
        }
    }
}

您必须使用带有操作码wlan\u intf\u操作码\u无线电\u状态的WLANSINTERFACE。