我正在开发一种使用VS2010连接到Wifi的方法,目前仍然坚持如何使用网络安全密钥连接。我能够枚举我所在区域的所有Wifi热点,并使用Windows Native Wifi函数(WlanOpenHandle,WlanEnumInterfaces,WlanQueryInterface,WlanGetNetworkBssList)获取其SSID,MAC地址等。我已经在MSDN上阅读了WlanConnect()
,但我仍然无能为力。你能给我一些提示,使代码连接到一个要求网络安全密钥的Wifi吗?
答案 0 :(得分:0)
假设您至少有一个已保存的Wifi连接,请运行命令
netsh wlan export profile
这会将所有Wifi配置文件导出为当前目录中的XML文件。
当您致电WlanConnect
时,如果WLAN_CONNECTION_PARAMETERS
设置为wLanConnectionMode
,您可以在wlan_connection_mode_temporary_profile
结构中提供文字XML配置文件字符串。
如果您可以使用其中一个导出的配置文件中的XML成功连接到安全网络,那么您可能应该能够更改XML并使用相同的技术连接到新网络。
我从来没有尝试过,我不知道XML中存储的密钥使用了什么编码,但它似乎是解决问题的可能方法。
答案 1 :(得分:0)
正如arx建议的那样,您需要一个示例配置文件。 导出配置文件时,添加key = clear arg。这将导出包含密钥的配置文件。您可以看到需要调整的设置。
示例:netsh wlan export profile name=”<profileName>” folder=”<SaveLocation>” key=clear
生成的xml将包含一个包含以下内容的部分:
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>YourPaswordTextHERE</keyMaterial>
</sharedKey>
</security>
</MSM>
因此,一旦获得了配置文件字符串,请使用以编程方式获取的密码更新keyMaterial元素。完成此操作后,您应该可以调用wlanConnect。