TCHAR pszTempPath[MAX_PATH];
TCHAR pszTempFile[MAX_PATH];
  if (0 != ::GetTempPath(MAX_PATH, pszTempPath))
  {
    if (0 != ::GetTempFileName(pszTempPath, _T("_tmp_to_del_"), 0, pszTempFile))
    {
      if (0 != ::MoveFileEx(pszFileToDel, pszTempFile, MOVEFILE_REPLACE_EXISTING))
      {
        if (0 != ::MoveFileEx(pszTempFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT))
        {
          return true;
        }
      }
    }
 }
  return false;
}

解决方案 »

  1.   

    开头是两个数组吧,下面是API调用!
      

  2.   


    Option ExplicitPrivate Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
    Private Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long
    Private Const MAX_PATH = 260
    Private Const MOVEFILE_REPLACE_EXISTING = &H1
    Private Const MOVEFILE_DELAY_UNTIL_REBOOT = &H4
    Sub main()
        Debug.Print DelFile("_tmEA5C.tmp")
    End SubFunction DelFile(ByVal pszFileToDel As String) As Boolean
        Dim pszTempPath As String
        Dim pszTempFile As String
        
        pszTempPath = String(MAX_PATH, vbNullChar)
        If GetTempPath(MAX_PATH, pszTempPath) <> 0 Then
            pszTempPath = Left(pszTempPath, InStr(pszTempPath, vbNullChar) - 1)
            pszTempFile = String(MAX_PATH, vbNullChar)
            If GetTempFileName(pszTempPath, "_tmp_to_del_", 0, pszTempFile) <> 0 Then
                pszTempFile = Left(pszTempFile, InStr(pszTempFile, vbNullChar) - 1)
                If MoveFileEx(pszFileToDel, pszTempFile, MOVEFILE_REPLACE_EXISTING) <> 0 Then
                    If MoveFileEx(pszTempFile, Null, MOVEFILE_DELAY_UNTIL_REBOOT) <> 0 Then
                        DelFile = True
                    End If
                End If
            End If
        End If
    End Function
      

  3.   

    将上述代码中的“Null”修改为“VbNUllString”。
    这段代码的意思是获得临时文件夹下的临时文件,并以一个新的临时文件覆盖掉旧的临时文件,然后在机器重启后,由操作系统删除掉这个临时文件。
    谁写的C++代码,啰嗦死了。