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

时间:2016-06-29 11:48:01

标签: c# windows vpn

我在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();

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

(编辑:我以前在XP中做的是在网络连接下创建VPN项目的快捷方式,然后我可以简单地直接调用例如。“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“系统找不到指定的文件。”使用cmd.exe的变体也失败了...我现在已经没有想法了。

1 个答案:

答案 0 :(得分:2)

使用rasphone.exe。

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

SuperUser

上有一个答案