通过托管Wifi API进行WLAN管理

时间:2016-03-16 17:17:25

标签: c# windows wifi

我需要管理Windows平板电脑设备的无线网络连接。平板电脑正在运行Windows 8.1 Industry。

我发现Managed Wifi API似乎应该让这项任务更容易。但是,使用提供的示例,我无法简单地连接到网络。

无论我尝试什么,都会引发相同的异常:

An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in ManagedWifi.dll
Additional information: The parameter is incorrect

我可以列出SSID并探索它们。我认为通过导出无线配置文件(如下面的代码片段)并使用它作为通过API进行连接的profileXml可以工作,但是会发生同样的错误。

netsh wlan export profile xxxx folder=c:\

下面的C#代码:

            // Connects to a known network with WEP security
            string profileName = "xxxxx"; // this is also the SSID
            string mac = "4254487562332D50575147";
            string key = "xxxx"; //this is my passphrase
            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>WPA2PSK</authentication><encryption>AES</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>true</protected><keyMaterial>{2}</keyMaterial></sharedKey></security></MSM><MacRandomization xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v3\"><enableRandomization>false</enableRandomization></MacRandomization></WLANProfile>", profileName, mac, key);

            wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
            wlanIface.Connect( Wlan.WlanConnectionMode.Auto, Wlan.Dot11BssType.Any, profileXml);

我可以指出正确的方向吗?

1 个答案:

答案 0 :(得分:0)

作为起点:

使用Windows连接到网络。确保勾选“自动连接”。

转到

  

\ ProgramData \ Microsoft \ Wlansvc \ Profiles \ Interfaces \

并找到为您的新连接创建的配置文件。 将XML复制到您的代码中并替换动态部分。