2016-04-15 89 views
0

由于我完成了学校项目,现在没有任何东西了,我开始在我的小控制台应用程序中实现Easteregg。应该安装Telnet (pkgmgr /iu:"TelnetClient")并调用星球大战动画:"telnet" + "o" + "towel.blinkenlights.nl"安装并连接到Telnet [控制台应用程序]

要做到这一点,我的应用开辟了一个CMD提示符,它安装远程登录:

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()); 
    } 

然而,第一Commandprompt关闭本身并没有错误消息任何责任。 我也尝试使用Console.ReadKey()来获得错误,但仍然没有有用的信息。我的第一个念头是cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl");不能由一个单一的线用它来执行,所以我尝试

cmd.StandardInput.WriteLine("telnet"); 
cmd.StandardInput.WriteLine("o"); 
cmd.StandardInput.WriteLine("towel.blinkenlights.nl"); 

仍然没有成功。那么你们知道我应该怎么做才能让这段代码起作用吗?谢谢!

回答

1

使用

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"; 

此外,在测试你应该考虑设置CreateNoWindowfalse

1

Environment.Exit(0)关闭整个环境。

您应该只关闭进程,以便代码可以到达telnet连接。

相关问题