写了一个下载文件的程序,下载完后想把临时文件删除,但提示权限拒绝,请问这如何解决?临时文件位置:C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\T1S2CNT3\update[1].exe删除命令:kill C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\T1S2CNT3\update[1].exe

解决方案 »

  1.   

    程序没有关闭。
    试试,用 FindWindow API 函数找到它,然后发送 WM_CLOSE 消息关闭它。
      

  2.   

    to:of123() 能否详细点,偶是菜鸟to:happy_sea(开心海)
    偶是用一控件的
      

  3.   

    Temporary Internet Files里面的文件不能随便读的呵呵,,,可以简单的实现,有一篇帖子里面我回复过。不过感觉输出到文件不好,经高手提示改用管道获取输出结果,然后处理更好一些。
    以前发的代码应该是这样的:(使了一个DIR命令而已,呵呵)
    取段名是必须的,DOS命令的缘故
    Option Explicit
    Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As LongPublic Function GetShortPath(strFileName As String) As String
        Dim lngRes As Long, strPath As String
        strPath = String$(165, 0)
        lngRes = GetShortPathName(strFileName, strPath, 164)
        GetShortPath = Left$(strPath, lngRes)
    End FunctionPrivate Sub Command1_Click()
    Text1.Text = GetShortPath("C:\Documents and Settings\zcsor\Local Settings\Temporary Internet Files")
    End SubPrivate Sub Form_Click()
    Dim stmp As String
    Open "c:\11.txt" For Input As #1
        Do While Not EOF(1)
            Line Input #1, stmp
            Debug.Print stmp
        Loop
    Close #1
    End SubPrivate Sub Form_Load()
    On Error Resume Next '我懒,这就是防止文件不存在还删除产生错误而已
    Kill "c:\11.txt"
    Dim spath As String
    spath = GetShortPath("C:\Documents and Settings\zcsor\Local Settings\Temporary Internet Files")
    Me.Caption = spath
    Shell "cmd.exe /c dir " & spath & " /s /w >> c:\11.txt", vbHide
    End Sub如果是因为文件打开了,那我们可以查找所有进程,得到与文件名相同的那个(一般是这样),然后呢,杀了这个进程,删除文件即可。当然了,如果我们不去关进程就想删除文件,那操作就比较多一点,涉及到较多内容,可以参看“如何在运行时删除自身”的一个C代码,用相同的方法(主要是关闭文件句柄,内存映射等操作)来删除一个打开的文件。
      

  4.   

    忘记说了,上面代码测试时需要加一个TEXT,一个COMMAND名字都是默认的。。
    测试时先点COMMAND,然后点一下窗体
      

  5.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const WM_CLOSE As Long = &H10Private Sub Command1_Click()
        Dim TemphWnd As Long
        
        TemphWnd = FindWindow(vbNullString, "你的程序窗口标题")    If TemphWnd Then SendMessage TemphWnd, WM_CLOSE, 0, 0
    End Sub