如果可执行文件从DVD ROM运行,'WaitForExit'将不会等待,但是如果从C:驱动器或外部闪存驱动器运行,它将“等待”。有什么线索为什么这个属性不起作用?
这是我的代码。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Try
Dim p As New Process
With p
With p.StartInfo
.FileName = "D:\setup.exe" 'DVD DRIVE
'.FileName = "F:\setup.exe" 'EXTERNAL DRIVE
End With
.EnableRaisingEvents = True
.Start()
.WaitForExit()
.Close()
.Dispose()
End With
p = Nothing
MsgBox("END")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
答案 0 :(得分:1)
这是安装程序的一项特定功能,它们将自身复制到硬盘驱动器,以便用户在繁忙安装时弹出驱动器时不会失败。这将是糟糕的,留下部分安装的应用程序。这种情况比您想象的要频繁得多,这是一个经典的“哦不!不是故意这样做!”用户响应。特别是在AutoRun仍然有效的时代。
所以你看到的是真正发生的事情。该过程实际上已经在硬盘驱动器上启动副本后立即退出。当然,你无能为力。在退出之后试图找回它将是一种解决方法。