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

How to connect to a Wifi that requests for a network security key using Windows Native Wifi Functions?

本文关键字:Wifi 请求 网络安全 密钥 功能 何使用 Windows 本机 连接      更新时间:2023-10-16

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

假设您至少有一个保存的 Wifi 连接,请运行命令

netsh wlan export profile

这会将您的所有 Wifi 配置文件导出为当前目录中的 XML 文件。

调用WlanConnect时,如果wLanConnectionMode设置为 wlan_connection_mode_temporary_profile,则可以在 WLAN_CONNECTION_PARAMETERS 结构中提供文本 XML 配置文件字符串。

如果可以使用导出的配置文件之一中的 XML 成功连接到安全网络,那么大概您应该能够更改 XML 并使用相同的技术连接到新网络。

我从未尝试过这个,也不知道存储在 XML 中的密钥使用什么编码,但这似乎是解决您问题的可能方法。

正如 arx 所建议的那样,您需要一个示例配置文件来开始。导出配置文件时,添加键=清除参数。这将导出包含密钥的配置文件。您可以看到需要调整的设置。

例 : 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。