如何使用预先保存的 VPN 凭据启动 VPN?

How to start VPN using the pre-saved VPN credentials?

我在 Windows 7 中建立了一个名为 "My VPN" 的 VPN 连接,它保存了凭据。因此,当我在 Windows 中手动启动 VPN 时,它会立即连接而无需询问用户的登录名或密码。

我现在想使用保存的凭据从代码启动相同的 VPN 连接,但我还没有找到无需在代码中提供凭据即可启动它的方法,我不想这样做安全原因。例如,这可以正常工作,只要我在参数字符串中提供登录名和密码:

cmd.StartInfo.FileName = "rasdial.exe";
cmd.StartInfo.Arguments = "\"My VPN\" mylogin mypassword";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.ErrorDialog = true;
cmd.StartInfo.RedirectStandardError = true;
cmd.Start();

当我从参数字符串中遗漏凭据时,它拒绝连接,即使该连接已保存它们。有没有办法从代码强制它使用保存的凭据?

(Ed: 我以前在 XP 中做的是在网络连接下创建 VPN 项目的快捷方式,然后我可以直接调用例如 "Shortcut to MyVPN.lnk",这样就可以了。不知道是什么如果可能的话,Windows 7 等价于此。)


好的,知道如何创建 VPN 的快捷方式,所以我现在有一个 .lnk 文件。当我双击快捷方式时,VPN 连接完美。此外,我可以使用 start "" "C:\...\MyVPN.lnk" 从命令行启动它 - 这也有效。

但是,我无法从代码中重现它。我试过:

cmd.StartInfo.FileName = "start \"\" \"C:\...\MyVPN.lnk\"";
cmd.StartInfo.Arguments = "";

cmd.StartInfo.FileName = "start";
cmd.StartInfo.Arguments = "\"\" \"C:\...\MyVPN.lnk\"";

抛出 Win32Exception "The system cannot find the file specified." 使用 cmd.exe 的变体也失败了...我 运行 目前没有想法。

使用rasphone.exe.

cmd.StartInfo.FileName = "rasphone.exe";
cmd.StartInfo.Arguments = "-d \"My VPN\"";
...
...
...

SuperUser

上有关于使用它的答案