在Windows问题上连接到企业WiFi

时间:2019-09-20 21:36:04

标签: c++ windows qt wlanapi

我在Windows Server 2016上配置了Radius服务器,并希望使用我的应用程序连接到Enterprise 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 docs:

wlan_notification_acm_scan_fail:

  

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

     

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

因此,发生此问题时,我检查了pData并返回以下原因:

wlan_notification_acm_scan_fail “操作成功。”

但是网络未连接。预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我已解决此问题。问题是因为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>

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