安装并连接到 Telnet [控制台应用程序]
Install and connect to Telnet [Console Application]
因为我完成了我的学校项目并且现在没有任何东西了,所以我开始在我的小控制台应用程序中实现 Easteregg。它应该安装 telnet (pkgmgr /iu:"TelnetClient")
并调用 StarWars 动画:"telnet" + "o" + "towel.blinkenlights.nl"
为此,我的应用程序打开了一个 CMD 提示符,它安装了 Telnet:
public static void EastereggInstall()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("pkgmgr /iu:'TelnetClient'");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
Environment.Exit(0);
}
任务完成后 Environment.Exit(0);
它调用另一个 CMD 提示连接到启动动画的 telnet 服务器:
public static void EastereggPlay()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}
但是,第一个命令提示符自行关闭,没有任何错误消息。
我也尝试使用 Console.ReadKey()
来获取错误,但仍然没有有用的信息。我的第一个想法是 cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl");
不能在一行中使用它来执行,所以我尝试了
cmd.StandardInput.WriteLine("telnet");
cmd.StandardInput.WriteLine("o");
cmd.StandardInput.WriteLine("towel.blinkenlights.nl");
仍然没有成功。那么你们知道我应该怎么做才能让这段代码工作吗?谢谢!
Environment.Exit(0) 关闭整个环境。
您应该只关闭进程,这样代码才能到达 telnet 连接。
使用
ProcessStartInfo startInfo = new ProcessStartInfo("cmd");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = "/c telnet o towel.blinkenlights.nl";
Process.Start(startInfo);
确保该命令有效,否则 cmd 进程将退出。
为确保一切正常,请尝试
startInfo.Arguments = "/c ping google.com -t";
此外,在测试时您应该考虑将 CreateNoWindow
设置为 false
因为我完成了我的学校项目并且现在没有任何东西了,所以我开始在我的小控制台应用程序中实现 Easteregg。它应该安装 telnet (pkgmgr /iu:"TelnetClient")
并调用 StarWars 动画:"telnet" + "o" + "towel.blinkenlights.nl"
为此,我的应用程序打开了一个 CMD 提示符,它安装了 Telnet:
public static void EastereggInstall()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("pkgmgr /iu:'TelnetClient'");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
Environment.Exit(0);
}
任务完成后 Environment.Exit(0);
它调用另一个 CMD 提示连接到启动动画的 telnet 服务器:
public static void EastereggPlay()
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
}
但是,第一个命令提示符自行关闭,没有任何错误消息。
我也尝试使用 Console.ReadKey()
来获取错误,但仍然没有有用的信息。我的第一个想法是 cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl");
不能在一行中使用它来执行,所以我尝试了
cmd.StandardInput.WriteLine("telnet");
cmd.StandardInput.WriteLine("o");
cmd.StandardInput.WriteLine("towel.blinkenlights.nl");
仍然没有成功。那么你们知道我应该怎么做才能让这段代码工作吗?谢谢!
Environment.Exit(0) 关闭整个环境。
您应该只关闭进程,这样代码才能到达 telnet 连接。
使用
ProcessStartInfo startInfo = new ProcessStartInfo("cmd");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = "/c telnet o towel.blinkenlights.nl";
Process.Start(startInfo);
确保该命令有效,否则 cmd 进程将退出。
为确保一切正常,请尝试
startInfo.Arguments = "/c ping google.com -t";
此外,在测试时您应该考虑将 CreateNoWindow
设置为 false