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

Posted

技术标签:

【中文标题】如何使用预先保存的 *** 凭据启动 ***?【英文标题】:How to start *** using the pre-saved *** credentials? 【发布时间】:2016-11-01 02:31:32 【问题描述】:

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

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

cmd.StartInfo.FileName = "rasdial.exe";
cmd.StartInfo.Arguments = "\"My ***\" 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 中所做的是在网络连接下创建 *** 项的快捷方式,然后我可以直接调用例如“My***.lnk 的快捷方式”,这样就可以了。不知道是什么如果可能的话,Windows 7 的等效版本就是这样。)


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

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

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

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

抛出 Win32Exception“系统找不到指定的文件。”使用cmd.exe 的变体也失败了......我现在已经没有想法了。

【问题讨论】:

“cmd”是什么对象类型? 【参考方案1】:

使用 rasphone.exe。

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

SuperUser上有一个关于使用这个的答案

【讨论】:

谢谢!!我在某处读到(或误读)rasphone 是 XP 版本,所以根本没想过要尝试。 :)

以上是关于如何使用预先保存的 *** 凭据启动 ***?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 9.2 中的应用程序构建中保存登录凭据

如何使用 PowerShell 启动/停止远程服务器上的服务 - Windows 2008 并提示输入凭据?

在 CORS 中,是不是已预先发送带有凭据的 POST 请求?

在 CORS 中,是不是已预先发送带有凭据的 POST 请求?

如何在启动程序且 UAC 被禁用时强制提示输入凭据?

如何在不提供 C# 管理员凭据的情况下从标准用户启动进程