C++ 在Windows问题上连接到企业WiFi

C++ 在Windows问题上连接到企业WiFi,c++,windows,qt,wlanapi,C++,Windows,Qt,Wlanapi,我在Windows Server 2016上配置了Radius服务器,我想使用我的应用程序连接到企业WiFi网络。我尝试执行以下步骤: 使用WlanSetProfile设置没有凭据的配置文件(我使用了从netsh导入的配置文件,但做了一些修改) 然后使用我的用户名和密码将下面的xml配置文件设置为WLANSETPROFILEAPXMLUSERDATA: <?xml version="1.0" ?> <EapHostUserCredentials xmlns="http://

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

使用WlanSetProfile设置没有凭据的配置文件(我使用了从netsh导入的配置文件,但做了一些修改)

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

<?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>

26
0
26
试验
试验
然后我使用WlanConnect函数和回调函数来验证连接。连接时,我遇到以下问题:

NotificationCode返回代码8(wlan\U通知\U acm\U扫描\U失败),然后返回代码11(wlan\U通知\U acm\U连接\U尝试\U失败)

此外,从MS文档:

wlan\u通知\u acm\u扫描失败:

扫描可连接网络失败

WLAN_NOTIFICATION_数据结构的pData成员指向 WLAN\原因\标识WLAN原因的代码数据类型值 操作失败

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

wlan\u通知\u acm\u扫描\u失败 “手术成功。”


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

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

wlan\u通知\u acm\u扫描\u失败“操作成功。”

将PerformServerValidation设置为false修复了该问题(WlanSetProfile函数)

false
此外,我还为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>

25
0
25
26
用户名
密码
现在它成功地连接到企业网络。问题解决了。多谢各位

<?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>