如何使用Windows Native Wifi功能连接到请求网络安全密钥的Wifi?

时间:2013-10-31 09:47:29

标签: c++ windows winapi windows-8

我正在开发一种使用VS2010连接到Wifi的方法,目前仍然坚持如何使用网络安全密钥连接。我能够枚举我所在区域的所有Wifi热点,并使用Windows Native Wifi函数(WlanOpenHandle,WlanEnumInterfaces,WlanQueryInterface,WlanGetNetworkBssList)获取其SSID,MAC地址等。我已经在MSDN上阅读了WlanConnect(),但我仍然无能为力。你能给我一些提示,使代码连接到一个要求网络安全密钥的Wifi吗?

2 个答案:

答案 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。