【问题标题】:Connect to Enterprise WiFi on Windows issue在 Windows 问题上连接到企业 WiFi
【发布时间】:2019-09-20 21:36:04
【问题描述】:

我在 Windows Server 2016 上配置了 Radius 服务器,我想使用我的应用程序连接到企业 WiFi 网络。我尝试执行以下步骤:

使用 WlanSetProfile 设置不带凭据的配置文件(我使用从 netsh 导入的配置文件并进行了一些修改)

然后使用我的用户名和密码将下面的 xml 配置文件设置为 WlanSetProfileEapXmlUserData

<?xml version="1.0" ?> 
 <EapHostUserCredentials xmlns="http://www.microsoft.com/provisioning/EapHostUserCredentials" 
   xmlns:eapCommon="http://www.microsoft.com/provisioning/EapCommon" 
   xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials">
   <EapMethod>
     <eapCommon:Type>26</eapCommon:Type> 
     <eapCommon:AuthorId>0</eapCommon:AuthorId> 
   </EapMethod>
   <Credentials xmlns:eapUser="http://www.microsoft.com/provisioning/EapUserPropertiesV1" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1" 
     xmlns:MsPeap="http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1" 
     xmlns:MsChapV2="http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1">
     <baseEap:Eap>
       <baseEap:Type>26</baseEap:Type> 
       <MsChapV2:EapType>
         <MsChapV2:Username>test</MsChapV2:Username> 
         <MsChapV2:Password>test</MsChapV2:Password> 
       </MsChapV2:EapType>
     </baseEap:Eap>
   </Credentials>
 </EapHostUserCredentials>

然后我使用WlanConnect函数和回调函数来验证连接。连接时出现以下问题:

NotificationCode 返回代码 8 (wlan_notification_acm_scan_fail) 和 11 (wlan_notification_acm_connection_attempt_fail)。

另外,来自 MS 文档:

wlan_notification_acm_scan_fail:

对可连接网络的扫描失败。

WLAN_NOTIFICATION_DATA 结构的 pData 成员指向一个 WLAN_REASON_CODE 数据类型值,用于标识 WLAN 的原因 操作失败。

所以,我在出现此问题时检查了 pData,它返回以下原因:

wlan_notification_acm_scan_fail "操作成功。"

但是网络没有连接。提前感谢您的帮助。

【问题讨论】:

    标签: c++ windows qt wlanapi


    【解决方案1】:

    我已经解决了这个问题。问题是因为 PerformServerValidation 设置为 true 并且它显示通知对话框以验证 Windows 上的证书,这就是它返回的原因:

    wlan_notification_acm_scan_fail "操作成功。"

    将 PerformServerValidation 设置为 false 可解决问题(WlanSetProfile 函数)。

    <PerformServerValidation xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2\">false</PerformServerValidation>
    

    另外,对于 WlanSetProfileEapXmlUserData 函数,我提供了这个配置文件:

    <?xml version="1.0" ?>
    <EapHostUserCredentials
    xmlns="http://www.microsoft.com/provisioning/EapHostUserCredentials"
    xmlns:eapCommon="http://www.microsoft.com/provisioning/EapCommon"
    xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials">
    <EapMethod>
    <eapCommon:Type>25</eapCommon:Type>
    <eapCommon:AuthorId>0</eapCommon:AuthorId>
    </EapMethod>
    <Credentials
    xmlns:eapUser="http://www.microsoft.com/provisioning/EapUserPropertiesV1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
    xmlns:MsPeap="http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"
    xmlns:MsChapV2="http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1">
    <baseEap:Eap>
    <baseEap:Type>25</baseEap:Type>
    <MsPeap:EapType>
    <baseEap:Eap>
    <baseEap:Type>26</baseEap:Type>
    <MsChapV2:EapType>
    <MsChapV2:Username>username</MsChapV2:Username>
    <MsChapV2:Password>password</MsChapV2:Password>
    </MsChapV2:EapType>
    </baseEap:Eap>
    </MsPeap:EapType>
    </baseEap:Eap>
    </Credentials>
    </EapHostUserCredentials>
    

    现在它已成功连接到企业网络。问题已解决。谢谢。

    【讨论】:

      【解决方案2】:

      在调用 WlanSetProfile() 时,确保将 WlanProfileFlags 设置为 AllUser。

      【讨论】:

        猜你喜欢
        • 2012-03-02
        • 2011-09-25
        • 2019-01-15
        • 2022-01-20
        • 2019-11-05
        • 2015-01-13
        • 2020-02-27
        • 2013-09-11
        • 1970-01-01
        相关资源
        最近更新 更多