Ingresso standard di processo C #

Attualmente sto provando a disconnettermi da una cartella di rete tramite la riga di comando e sto usando il seguente codice:

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

Occasionalmente, ricevo il messaggio “È corretto continuare a scolbind e forzarli a chiudersi? (S / N) [N]”, a cui voglio rispondere “S”, ma sembra che abbia problemi con quello funzionante.

Qualcuno sa perché il mio codice non sta inserendo “Y” nello standard input?

Usa sotto il codice per ottenere il messaggio “Va bene continuare a scolbind e forzarli chiusi? (S / N) [N]”, a cui rispondere “Y”

 static void Main(string[] args) { 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(); Read(process2.StandardOutput); Read(process2.StandardError); while (true) process2.StandardInput.WriteLine("Y"); } private static void Read(StreamReader reader) { new Thread(() => { while (true) { int current; while ((current = reader.Read()) >= 0) Console.Write((char)current); } }).Start(); } 

Penso che questo possa aiutarti