gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:16:56 28 4
gpt4 key购买 nike

我在 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 项目的快捷方式,然后我可以直接调用例如“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“系统找不到指定的文件。”使用 cmd.exe 的变体也失败了……我现在已经没有想法了。

最佳答案

使用 rasphone.exe。

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

SuperUser 上有关于使用它的答案

关于c# - 如何使用预先保存的 VPN 凭据启动 VPN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098644/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com