我试图在通用Windows应用中创建新的VPN配置文件。 我正在使用this api.
有两种记录方法可以做到这一点。 AddProfileFromXmlAsync和AddProfileFromObjectAsync。对我来说不幸的是,它们都没有正常工作。
当我使用AddProfileFromXmlAsync时,我总是得到错误的AccessDenied。我在这个thread上看到它可能与错误的xml语法有关,但是当我使用确切的xml in the Microsoft example时,我也得到了同样的错误。
如果只提供ProfileName,则AddProfileFromObjectAsync可以正常工作。否则失败并显示错误其他。这对我来说还不够,因为我还需要配置NativeProtocolType属性。在我尝试添加新配置文件之前,我正在检查配置文件是否已经存在,以确保我没有收到错误其他因为配置文件已经存在。
我正在将这些功能添加到我的应用清单中:
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="internetClientServer" />
<Capability Name="privateNetworkClientServer" />
<rescap:Capability Name="networkingVpnProvider" />
</Capabilities>
有没有人知道会出现什么问题?
答案 0 :(得分:2)
这是一个至少在15063上的工作样本(请注意,周年纪念更新中存在一个错误,导致API无法正常运行,因此请尝试使用15063或确保您拥有Aniversary更新的所有更新)
// Install key and cert
await
CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync(PEMKey,
Password,
ExportOption.NotExportable,
KeyProtectionLevel.NoConsent,
InstallOptions.None,
"Test VPN");
VpnNativeProfile profile = new VpnNativeProfile();
profile.AlwaysOn = true;
profile.NativeProtocolType = VpnNativeProtocolType.IpsecIkev2;
profile.ProfileName = "Test VPN";
profile.RememberCredentials = false;
profile.RequireVpnClientAppUI = true;
profile.RoutingPolicyType = VpnRoutingPolicyType.ForceAllTrafficOverVpn;
profile.Servers.Add(Constants.ConcentratorDNSName);
profile.UserAuthenticationMethod = VpnAuthenticationMethod.Eap;
profile.EapConfiguration = File.ReadAllText("profile.xml");
VpnManagementAgent agent = new VpnManagementAgent();
await agent.AddProfileFromObjectAsync(profile);
VpnManagementErrorStatus status = await agent.ConnectProfileAsync(profile);
可以在https://docs.microsoft.com/en-us/windows/client-management/mdm/eap-configuration
找到示例EAP XML配置同样不幸的是,VPNv2 CSP中的XML与API中的XML不同。此外,在Microsoft内部检查时,似乎存在AddProfileFromXMLAsync的错误,导致它无法正常工作。