C # Connecting to a Wi-Fi network using the managed Wifi API

I was wondering if it is possible to connect to a Wi-Fi network using the managed Wifi API?

+6
source share
2 answers

I guess, yes.

Maybe you should spend a few minutes searching. From the Managed Wifi API Code Page:

The library uses its own Wifi API, ...

So, move on to the Native Wifi API: MSDN

Connect to or disconnect from a wireless network. See WlanConnect and WlanDisconnect.

Also, in the source code of the Wifi-managed API WlanApi.cs :

/// <summary> /// Requests a connection (association) to the specified wireless network. /// </summary> /// <remarks> /// The method returns immediately. Progress is reported through the <see cref="WlanNotification"/> event. /// </remarks> public void Connect(Wlan.WlanConnectionMode connectionMode, Wlan.Dot11BssType bssType, string profile) { Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters(); connectionParams.wlanConnectionMode = connectionMode; connectionParams.profile = profile; connectionParams.dot11BssType = bssType; connectionParams.flags = 0; Connect(connectionParams); } 

And a unique site selection does it! Example

 static void Main( string[] args ) { WlanClient client = new WlanClient(); foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces ) { // Lists all networks with WEP security Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 ); foreach ( Wlan.WlanAvailableNetwork network in networks ) { if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP ) { Console.WriteLine( "Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid)); } } // Retrieves XML configurations of existing profiles. // This can assist you in constructing your own XML configuration // (that is, it will give you an example to follow). foreach ( Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles() ) { string name = profileInfo.profileName; // this is typically the network SSID string xml = wlanIface.GetProfileXml( profileInfo.profileName ); } // Connects to a known network with WEP security string profileName = "Cheesecake"; // this is also the SSID string mac = "52544131303235572D454137443638"; string key = "hello"; string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key); wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true ); wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName ); } } 

Have a nice day!

+7
source

Windows 10 has APIs that can do this.

See the WiFiAdapter class on MSDN and some sample code on GitHub

The good thing I see with the managed API is that you don't have to deal with creating an XML profile to connect to the new network. In fact, you can only connect to the network with a password.

+1
source

Source: https://habr.com/ru/post/975193/


All Articles