UWP:无法创建新的VPN个人资料

时间:2017-11-10 14:31:40

标签: uwp win-universal-app windows-10-universal

我试图在通用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>

enter image description here

有没有人知道会出现什么问题?

1 个答案:

答案 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的错误,导致它无法正常工作。