我在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
的变体也失败了...我现在已经没有想法了。
答案 0 :(得分:2)
使用rasphone.exe。
cmd.StartInfo.FileName = "rasphone.exe";
cmd.StartInfo.Arguments = "-d \"My VPN\"";
...
...
...
上有一个答案