WinAPIのRemoveDirectoryは空のフォルダが削除できないので、中身のファイルおよびディレクトリを削除してからRemoveDirectoryを呼び出す必要があります。
とりあえず作ってみました。
BOOL _DeleteDirectory(LPCTSTR lpPathName) { BOOL bRet = TRUE; TCHAR szDirPathName[_MAX_PATH] = {0}; TCHAR szFindFileName[_MAX_PATH] = {0}; TCHAR szFileName[_MAX_PATH] = {0}; _tcscpy(szDirPathName, lpPathName); size_t length = _tcslen(szDirPathName); if (length > 0) { if (szDirPathName[length-1] != _T('\\')) _tcscat(szDirPathName, _T("\\")); } _tcscpy(szFindFileName, szDirPathName); _tcscat(szFindFileName, _T("*")); WIN32_FIND_DATA findData; HANDLE hFile = FindFirstFile(szFindFileName, &findData); if (hFile != INVALID_HANDLE_VALUE) { do { if (_tcscmp(findData.cFileName, _T(".")) != 0 && _tcscmp(findData.cFileName, _T("..")) != 0) { _tcscpy(szFileName, szDirPathName); _tcscat(szFileName, findData.cFileName); if ( findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) _DeleteDirectory(szFileName); else ::DeleteFile(szFileName); } } while ( ::FindNextFile(hFile, &findData) ); } ::FindClose(hFile); bRet = ::RemoveDirectory(lpPathName); return bRet; }