|
删文件夹:
- void DeleteFolder(char *szFilePath)
- {
- WIN32_FIND_DATAA fd;
- char szSearch[MAX_PATH]={0};
- strcpy(szSearch,szFilePath);
- strcat(szSearch,"*.*");
- HANDLE h=FindFirstFileA(szSearch,&fd);
- if(h!=INVALID_HANDLE_VALUE)
- {
- BOOL bRet=TRUE;
- while(bRet)
- {
- bRet=FindNextFileA(h,&fd);
- if(stricmp(fd.cFileName,".."))
- {
- char tmp[MAX_PATH]={0};
- strcpy(tmp,szFilePath);
- strcat(tmp,fd.cFileName);
- if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- strcat(tmp,"\");
- //printf("[DIR]%s\n",tmp);
- DeleteFolder(tmp);
- RemoveDirectoryA(tmp);
- }
- else
- {
- //printf("[FIL]%s\n",tmp);
- DeleteFileA(tmp);
- }
- }
- }
- FindClose(h);
- }
- RemoveDirectoryA(szFilePath);
- }
复制代码
删注册表键:
- VOID RegDeleteKeys(HKEY RootKey, const char *pSubKey)
- {
- HKEY hKey;
- DWORD nRet,NameCnt,NameMaxLen,KeyCnt,KeyMaxLen,MaxDateLen;
- nRet=RegOpenKeyExA(RootKey,pSubKey,0,KEY_ALL_ACCESS,&hKey);
- if(nRet!=ERROR_SUCCESS)
- {
- return;
- }
- nRet = RegQueryInfoKey(hKey,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt,&NameMaxLen,&MaxDateLen,NULL,NULL);
- if(nRet == ERROR_SUCCESS)
- {
- for(int dwIndex = KeyCnt - 1; dwIndex >= 0; dwIndex--)
- {
- char sKeyName[256] = {0}, pSubKeyTemp[256] = {0};
- RegEnumKeyA(hKey, dwIndex, sKeyName, sizeof(sKeyName));
- HKEY hKeySub;
- DWORD KeyCntSub;
- strcpy(pSubKeyTemp, pSubKey);
- strcat(pSubKeyTemp, "\");
- strcat(pSubKeyTemp, sKeyName);
- nRet = RegOpenKeyExA(RootKey,pSubKeyTemp,0,KEY_ALL_ACCESS,&hKeySub);
- if(nRet == ERROR_SUCCESS)
- {
- nRet = RegQueryInfoKey(hKeySub,NULL,NULL,NULL,&KeyCntSub,&KeyMaxLen,NULL,&NameCnt,&NameMaxLen,&MaxDateLen,NULL,NULL);
- if(nRet == ERROR_SUCCESS)
- {
- if (KeyCntSub != 0)
- {
- RegDeleteKeys(RootKey, pSubKeyTemp);
- }
- RegCloseKey(hKeySub);
- }
- }
- RegDeleteKeyA(RootKey ,pSubKeyTemp);
- }
- RegCloseKey(hKey);
- }
- RegDeleteKeyA(RootKey ,pSubKey);
- }
复制代码
例子:
- DeleteFolder("c:\\windows\");
- RegDeleteKeys(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\services");
复制代码 |
|