1

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

4

2 回答 2

1

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

netsh wlan export profile

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

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

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

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

于 2013-11-01T13:07:40.907 回答
1

正如 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。

于 2014-10-31T20:53:22.370 回答