【发布时间】:2013-10-23 20:50:39
【问题描述】:
我目前正在尝试通过命令行断开与网络文件夹的连接,并使用以下代码:
System.Diagnostics.Process process2 = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C NET USE F: /delete";
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
process2.StartInfo = startInfo;
process2.Start();
StreamWriter sw = process2.StandardInput;
sw.WriteLine("Y");
sw.Close();
process2.WaitForExit();
process2.Close();
有时,我收到消息“可以继续断开连接并强制关闭它们吗?(Y/N) [N]”,我想回复“Y”,但我似乎对此有疑问在职的。
有人知道为什么我的代码没有在标准输入中输入“Y”吗?
【问题讨论】:
-
您正在重定向标准错误和输出,但实际上并未从中读取任何内容。如果您不想看到结果,请不要重定向它。还要注意读取标准输出和错误时常见的死锁陷阱;如果您不确保缓冲区被清空,缓冲区可能会被填满并永远坐在那里等待。
-
@MichaC 他将数据导向流程,而不是来自流程。
-
试试 Console.WriteLine
-
@Matt 我认为您需要阅读问题的标题。