C#通过管理Wifi API连接到Wifi网络

本文关键字:Wifi 连接 网络 API 管理 | 更新日期: 2023-09-27 18:21:48

我想知道是否可以通过管理wifi API连接到wifi网络?

C#通过管理Wifi API连接到Wifi网络

基本上是的。

也许你应该花几分钟时间搜索。从管理Wifi API codeplex页面:

该库使用Native Wifi API。。。

因此,转到Native Wifi API:MSDN

连接到无线网络或断开与无线网络的连接。请参见WlanConnect和WlanDisconnect。

此外,在托管Wifi 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);
}

网站的独特样本正在做这件事!样品

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's 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 );
    }
}

祝你今天过得愉快!

Windows 10中有一些API可以做到这一点。

请参阅MSDN上的WiFiAdapter类和GitHub 上UWP的一些示例代码

我在托管API上看到的好处是,您不必创建XML配置文件来连接到新的网络。实际上,只需一个密码就可以连接到网络。