前段时间写了一个关于Native Wifi API的应用程序,能够查询无线网络并根据输入用户名和密码连接指定的无线网络。其中遇到了一些问题,现在和大家分享一下,希望有所帮助。
问题1.调用WlanOpenHandle时总会出现1062错误,经过查阅资料,发现原来是WZC(Wireless Zero Configuration)服务没有开启导致的。
解决方法:在cmd下输入 net start wzcsvc
(还有其他方式,我当初在一个英文网站上找到的,大家也可以找找看)
问题2:调用WlanSetProfile,在profile参数中设置用户名和密码,然后调用WlanConnect便可以连接无线网络,但是总提示“网络连接配置文件损坏”的错误,也是查询一个英文网站后发现时xml配置文件编写错误导致的(具体参考:http://www.codeproject.com/Articles/72105/Manage-WiFi-with-Native-API-WIFI-on-Windows-XP-SP2)
解决方法:下面给出一个正确的xml配置文件的例子
profileXml = string.Format("<?xml version=\"1.0\" encoding=\"US-ASCII\"?>
<WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\">
<name>{0}</name><SSIDConfig><SSID><name>{0}</name></SSID></SSIDConfig>
<connectionType>ESS</connectionType><connectionMode>auto</connectionMode>
<autoSwitch>false</autoSwitch><MSM><security><authEncryption>
<authentication>WPAPSK</authentication><encryption>TKIP</encryption>
<useOneX>false</useOneX></authEncryption><sharedKey>
<keyType>passPhrase</keyType><protected>false</protected>
<keyMaterial>{1}</keyMaterial></sharedKey></security></MSM></WLANProfile>",
profileName, key);
Wlan.WlanSetProfile( clientHandle,
InterfaceGuid,
Wlan.WlanProfileFlags.AllUser,
profileXml,
null,
true,
IntPtr.Zero,
out reasonCode);
结束语:
后续关于native wifi api 的总结会继续分享。