잡다한 정보들(기타정보)

Temporary Internet Files 디렉토리안 파일 지우기

케이피 2009. 6. 23. 17:35

BOOL CPCOptimizerDlg::DelTempFiles()
{
 BOOL bResult = FALSE;
 BOOL bDone = FALSE;
 LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;

 DWORD  dwTrySize, dwEntrySize = 4096; // 시작 버퍼 크기   
 HANDLE hCacheDir = NULL;
 DWORD  dwError = ERROR_INSUFFICIENT_BUFFER;
   
 do
 {
  switch (dwError)
  {
   // 좀더 큰 버퍼가 필요하다.
   case ERROR_INSUFFICIENT_BUFFER:
    delete [] lpCacheEntry;
    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    lpCacheEntry->dwStructSize = dwEntrySize;
    dwTrySize = dwEntrySize;
    BOOL bSuccess;
    if (hCacheDir == NULL)
         
     bSuccess = (hCacheDir
       = FindFirstUrlCacheEntry(NULL, lpCacheEntry,
       &dwTrySize)) != NULL;
    else
     bSuccess = FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize);

    if (bSuccess)
     dwError = ERROR_SUCCESS;
    else
    {
     dwError = GetLastError();
     dwEntrySize = dwTrySize; // 새 버퍼 크기
    }
    break;
 
   // 작업 완료
   case ERROR_NO_MORE_ITEMS:
    bDone = TRUE;
    bResult = TRUE;
    break;

   // 엔트리 확보
   case ERROR_SUCCESS:
    // 쿠키 파일 삭제 금지
    if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
     DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
               
    // 다음 엔트리 얻기
    dwTrySize = dwEntrySize;
    if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize))
     dwError = ERROR_SUCCESS;
    else
    {
     dwError = GetLastError();
     dwEntrySize = dwTrySize; // 새로운 사이즈
    }
    break;
 
   // 에러
   default:
    bDone = TRUE;
    break;
  }

  if (bDone)
  {
   delete [] lpCacheEntry;
   if (hCacheDir)
    FindCloseUrlCache(hCacheDir);
  }
 } while (!bDone);
 
 return bResult;
}

쿠키 파일만 빼고 다 지우는거다.
From CodeGuru