VB.NET调用SCHTASKS删任务报The process tried to write to a nonexistent pipe如何解决
问题原因
- 报错本质是向已经提前终止的进程标准输入管道写入数据。你当前的实现绕了一层
cmd进程,执行删除命令时,输入确认字符y的时序与cmd、schtasks进程的退出逻辑冲突,导致管道提前断开。 - 手动执行命令时是人工控制输入节奏,不会出现时序错配问题,所以可以正常运行。
解决方案
最优修改方式(推荐)
直接调用schtasks.exe而非通过cmd中转,同时使用schtasks自带的/F参数跳过删除确认,无需额外输入y,彻底规避管道时序问题,修正后的代码如下:
Private Sub SimpleButton2_Click(sender As Object, e As EventArgs) Handles sbAutoRun.Click Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate) CMDThread.Start() End Sub Private Sub CMDAutomate() Dim sTime As String = teAutoRun.Time.ToString("HH:mm") Dim sCreateCmd As String = "/CREATE /SC DAILY /TN ""MyTasks\task"" /TR ""'" & My.Application.Info.DirectoryPath & "\program.exe' Auto"" /ST " & sTime & " /RL HIGHEST" Dim sDeleteCmd As String = "/DELETE /TN ""MyTasks\task"" /F" ' 加/F参数无需确认直接删除 My.Settings.AutoRun = ceAutoRun.Checked ' 直接启动schtasks而非cmd Dim StartInfo As New System.Diagnostics.ProcessStartInfo With { .FileName = "schtasks.exe", .RedirectStandardOutput = True, .RedirectStandardError = True, ' 新增错误输出捕获方便后续排查问题 .CreateNoWindow = True, .UseShellExecute = False } If My.Settings.AutoRun And Not My.Settings.AutoRunExists Then ' 仅执行创建 StartInfo.Arguments = sCreateCmd Using p As Process = Process.Start(StartInfo) p.WaitForExit() ' 如需排查问题可读取输出:Dim output = p.StandardOutput.ReadToEnd() End Using My.Settings.AutoRunExists = True ElseIf My.Settings.AutoRun And My.Settings.AutoRunExists Then ' 先删旧任务再建新任务 StartInfo.Arguments = sDeleteCmd Using p As Process = Process.Start(StartInfo) p.WaitForExit() End Using StartInfo.Arguments = sCreateCmd Using p As Process = Process.Start(StartInfo) p.WaitForExit() End Using Else ' 仅执行删除 StartInfo.Arguments = sDeleteCmd Using p As Process = Process.Start(StartInfo) p.WaitForExit() End Using My.Settings.AutoRunExists = False End If My.Settings.Save() End Sub
保留原有cmd中转写法的兼容修复
如果一定要保留原有逻辑,可通过调整时序避免管道提前断开:
- 所有
SW.WriteLine()执行后增加Threading.Thread.Sleep(100),等待进程处理输入 - 在
SW.WriteLine("exit")之后、关闭流之前增加myprocess.WaitForExit(),等待cmd进程完全退出
内容的提问来源于stack exchange,提问作者skipjack
相关产品推荐
相关产品推荐

