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;
}
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;
}
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
这段代码的意思是获得临时文件夹下的临时文件,并以一个新的临时文件覆盖掉旧的临时文件,然后在机器重启后,由操作系统删除掉这个临时文件。
谁写的C++代码,啰嗦死了。