如果exe在DVD ROM中,WaitForExit将不会等待

时间:2013-08-30 22:57:51

标签: vb.net process

如果可执行文件从DVD ROM运行,'WaitForExit'将不会等待,但是如果从C:驱动器或外部闪存驱动器运行,它将“等待”。有什么线索为什么这个属性不起作用?

  1. 我在任务管理器上看到了这个过程
  2. 我正在使用VB.NET 2010。
  3. 这是我的代码。

    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
    

1 个答案:

答案 0 :(得分:1)

这是安装程序的一项特定功能,它们将自身复制到硬盘驱动器,以便用户在繁忙安装时弹出驱动器时不会失败。这将是糟糕的,留下部分安装的应用程序。这种情况比您想象的要频繁得多,这是一个经典的“哦不!不是故意这样做!”用户响应。特别是在AutoRun仍然有效的时代。

所以你看到的是真正发生的事情。该过程实际上已经在硬盘驱动器上启动副本后立即退出。当然,你无能为力。在退出之后试图找回它将是一种解决方法。