进程试图写入一个不存在的管道vb.net



我目前正在vb.net中编写一个子,该子应该在windows 10自带的任务调度程序中创建和/或擦除任务。创建部分工作得很好,但是当我试图擦除任务时,我在visual studio控制台中得到这个错误:"进程试图写入一个不存在的管道",而任务(当然)仍然存在。我一直在寻找解决方案,但没有找到类似的方法。下面是代码:

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 myprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
Dim sTime As String = teAutoRun.Time.ToString("HH:mm")
Dim sCmdCommand As String = "SCHTASKS /CREATE /SC DAILY /TN ""MyTaskstask"" /TR ""'" & My.Application.Info.DirectoryPath & "program.exe' Auto"" /ST " & sTime & " /RL HIGHEST"
Dim sCmdCommand2 As String = "SCHTASKS /DELETE /TN ""MyTaskstask"""
My.Settings.AutoRun = ceAutoRun.Checked
StartInfo.FileName = "cmd" 'starts cmd window
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.CreateNoWindow = True '<---- if you want to not create a window
StartInfo.UseShellExecute = False 'required to redirect
myprocess.StartInfo = StartInfo
myprocess.Start()
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
If My.Settings.AutoRun And Not My.Settings.AutoRunExists Then
SW.WriteLine(sCmdCommand)
My.Settings.AutoRunExists = True
Console.WriteLine(sCmdCommand)
ElseIf My.Settings.AutoRun And My.Settings.AutoRunExists Then
SW.WriteLine(sCmdCommand2)
SW.WriteLine("y")
SW.WriteLine(sCmdCommand)
Else
SW.WriteLine(sCmdCommand2)
SW.WriteLine("y")
My.Settings.AutoRunExists = False
Console.WriteLine(sCmdCommand2)
End If
SW.WriteLine("exit") 'exits command prompt window
SW.Close()
SR.Close()
My.Settings.Save()
End Sub

谢谢. .

Ps:在cmd中手动输入命令可以正常工作。

更新:更改此

sCmdCommand2 As String = "SCHTASKS /DELETE /TN ""MyTaskstask"""
SW.WriteLine(sCmdCommand2)
SW.WriteLine("y")

并写成这样

sCmdCommand2 As String = "SCHTASKS /DELETE /TN ""MyTaskstask"" /F"
SW.WriteLine(sCmdCommand2)

现在运行正常。

最新更新