Tak jak użytkownik Ktoś skomentował. W Windows 8 nie było API do obsługi WiFi, podobnego do tego dostępnego w Windows 10.
Ale w Windows Vista i nowszych z Windows 10 włącznie jest dostępne inne API, mianowicie: "Native Wifi API" zawarte w bibliotece wlanapi.dll. Niestety jest ona napisana chyba w C++ i nie da się jej użyć przez dodanie referencji. Na szczęście, dla amatorów takich jak ja, CodePlex udostępnił rozwiązanie, które importuje wlanapi.dll do C#: https://archive.codeplex.com/?p=managedwifi Wystarczy dodać do projektu dwa pliki: "Interop.cs" oraz "WlanApi.cs" i można użyć poniższego kodu.
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; //W tym miejscu ustawiamy, czy ma nastąpić włączenie, czy wyłączenie WiFi
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);
}
}
}