也就是说程序进程还在,但是自身exe已经被删除了?有方法吗?

解决方案 »

  1.   

    好像不行,你可以调用另一个exe文件,关闭前一个然后删除
      

  2.   

    EXE在运行过程中,系统是不允许进行删除的,因此理论上是无法自删除的,因此,大部份的反安装程序在需要进行自删除的时候,都是外调放在另外一个地方的程序(可选择TEMP目录),然后再退出,使用外部程序来删除。最方便的方法,我们可以能过使用VB在当前目录下写一个批处理文件,然后退出运行的时候调用该批处理文件来删除自己及该批处理文件。如VB程序为VB.exe
    我们可以在VB需要自删除的时候,先写一个批处理文件在当前目录下,名字叫做Uninstall.bat,然后,退出程序的时候外调这个批处理文件即可。建立一个按钮叫做cmdDeleteMySelf即可测试:VB.exe:
    'Project:  Delete OneSelf Demo
    '        File:  frmDeleteOneSelfDemo.frm
    ' Description:  This program show how to delete oneself
    '
    Private Sub cmdDeleteMySelf_Click()
        Call funBuildABatch
        Shell funMyPath & "Uninstall.bat", vbHide
        End
    End Sub'    Procedure: funBuildABatch
    '  Description: Build a batch file for delete uninstall execute file.
    '   Parameters: none.
    ' Return value: none.
    '
    Function funBuildABatch()
        Dim sFileNameSave As String
        sFileNameSave = funMyPath & "Uninstall.bat"
        Open sFileNameSave For Output Shared As #1
            Print #1, "Del " & App.EXEName & ".exe"
            Print #1, "Del Uninstall.bat"
        Close #1
    End Function'    Procedure: funMyPath
    '  Description: define the user's current path.
    '   Parameters: none
    ' Return value: String:user's current path.
    '
    Function funMyPath()
        If Right(App.Path, 1) <> "\" Then
            funMyPath = App.Path & "\"
        Else
            funMyPath = App.Path
        End If
    End Function
      

  3.   

    http://www.cndevx.com/club/dispbbs.asp?boardID=30&ID=45902
      

  4.   

    我是想让程序继续运行,但是exe文件已经删除了,有方法吗?
      

  5.   

    你的要求就如同:我要让我的思维继续,但肉身已经湮灭。
    呵呵,去www.cmfu.com找答案吧。
      

  6.   

    ivenz() 的方法有个疑问
    在运行SHELL语句时,其实这时还没有运行END语句,也就是程序并没有完全退出,这时调用批处理程序可以成功删除程序本身吗?和上面所说的EXE程序运行时不能删除自身不是矛盾吗?
    研究一下