【发布时间】:2016-11-01 02:31:32
【问题描述】:
我在 Windows 7 中建立了一个名为“我的 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 项的快捷方式,然后我可以直接调用例如“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 的变体也失败了......我现在已经没有想法了。
【问题讨论】:
-
“cmd”是什么对象类型?