【发布时间】:2017-03-18 13:29:56
【问题描述】:
下一个 C# 方法调用 rasdial VPN-Name name *。 * 表示从键盘输入密码。但我想将密码从 C# 应用程序传递给进程。
public bool connect(UserCredentials userCredentials)
{
// "Dial" to VPN
var psi = new ProcessStartInfo("rasdial")//("cmd")
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
//CreateNoWindow = true,
UseShellExecute = false, // Unusable if Streams redirected
Arguments = $"{InterfaceName} {userCredentials.name} *"
};
var proc = new Process {
StartInfo = psi
//,EnableRaisingEvents = true
};
proc.Start();
// PASS PASSWORD VIA STDIN. Does not work. Keyboard input FORCED!
//proc.WaitForInputIdle();
proc.StandardInput.WriteLine(userCredentials.pass);
proc.WaitForExit();
return true;// proc.ExitCode == 0; // Can throws "Not exited yet"
}
有没有办法将密码传递给rasdial?
我可以调用rasdial VPN-Name login passwd。 这种方法缺乏安全性。已弃用。 任何男生都可以监控进程的参数。
【问题讨论】:
标签: c# process passwords stdin