文件夹病毒专杀简单实现
来源:互联网 发布:linux 编译python模块 编辑:程序博客网 时间:2024/05/17 09:23
#include <iostream>
#include <string>
#include <windows.h>
#include <tchar.h>
using namespace std;
//扫描到文件时调用的回调函数类型
typedef void (*ScanFileCallBack)(TCHAR *pFileName,PVOID pParameter);
//扫描到文件时调用的回调函数,这里可以充分的发挥聪明才智
void DealWithFile(TCHAR *pFileName,PVOID pParameter)
{
(*(int *)pParameter)++;
cout<<pFileName;
cout<<endl;
}
void ScanDirectory(TCHAR *pStrDirectory,ScanFileCallBack funcDoSomething,PVOID pParameter =NULL)
{
string direc[MAX_PATH];
string file[MAX_PATH];
int count=0;
int count1=0;
int flag=0;
if(pStrDirectory == NULL)
{
return ;
}
WIN32_FIND_DATA fData={0};
TCHAR tcDirectory[MAX_PATH]={0},tcScanFileType[MAX_PATH]={0};
int iLength =_tcslen(pStrDirectory);
if(iLength>MAX_PATH) //如果目录路径过长则失败
{
return ;
}
_tcscpy(tcScanFileType ,pStrDirectory); //保存扫描文件夹
if(_T('\\') == tcScanFileType[iLength - 1])
_tcscat(tcScanFileType,_T("*.*"));
else
_tcscat(tcScanFileType,_T("\\*.*")); //构造扫描文件类型名
HANDLE hFindHandle = FindFirstFile(tcScanFileType,&fData);
if(hFindHandle == INVALID_HANDLE_VALUE)
{
return ;
}
do
{
if(_T('.') == fData.cFileName[0])
{
// 跳过上层目录
continue;
}
_tcscpy(tcDirectory,pStrDirectory); //保存扫描文件夹
if('\\'!=tcDirectory[iLength -1])
_tcscat(tcDirectory,_T("\\"));
strcat(tcDirectory,fData.cFileName); //新文件名或子文件夹名
fData.dwFileAttributes &=FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY == fData.dwFileAttributes) //判断是否是目录
{
direc[count++]=tcDirectory;
}
else
{
file[count1++]=tcDirectory;
}
} while (FindNextFile(hFindHandle,&fData));
for(int i=0;i<count;i++)
{
cout<<direc[i]<<endl;
}
cout<<"-------------------------------------------------------------"<<endl;
for(int j=0;j<count1;j++)
{
cout<<file[j]<<endl;
}
cout<<"---------------------------------------------------------------"<<endl;
for(i=0;i<count1;i++)
{
int n=file[i].find_last_of(".");
string str=file[i].substr(0,n);
for(j=0;j<count;j++)
{
if(str==direc[j])
{
char *p = (char *)file[i].c_str();
string cmd="attrib -h -a -s -r ";
cmd=cmd+direc[j];
char *pcmd=(char *)cmd.c_str();
WinExec(pcmd,SW_NORMAL);
DeleteFile(p);
break;
}
}
}
}
int main()
{
char disk[256];
int flag=0;
DWORD len=GetLogicalDriveStrings(sizeof(disk)/sizeof(char),disk);
for(char *pdisk=disk;*pdisk;pdisk+=strlen(pdisk)+1)
{
if(GetDriveType(pdisk)==DRIVE_REMOVABLE)
{
flag=1;
break;
}
}
if(flag == 1)
{
int iCount=0;
ScanDirectory(pdisk,DealWithFile,&iCount);
}
return 0;
}
#include <string>
#include <windows.h>
#include <tchar.h>
using namespace std;
//扫描到文件时调用的回调函数类型
typedef void (*ScanFileCallBack)(TCHAR *pFileName,PVOID pParameter);
//扫描到文件时调用的回调函数,这里可以充分的发挥聪明才智
void DealWithFile(TCHAR *pFileName,PVOID pParameter)
{
(*(int *)pParameter)++;
cout<<pFileName;
cout<<endl;
}
void ScanDirectory(TCHAR *pStrDirectory,ScanFileCallBack funcDoSomething,PVOID pParameter =NULL)
{
string direc[MAX_PATH];
string file[MAX_PATH];
int count=0;
int count1=0;
int flag=0;
if(pStrDirectory == NULL)
{
return ;
}
WIN32_FIND_DATA fData={0};
TCHAR tcDirectory[MAX_PATH]={0},tcScanFileType[MAX_PATH]={0};
int iLength =_tcslen(pStrDirectory);
if(iLength>MAX_PATH) //如果目录路径过长则失败
{
return ;
}
_tcscpy(tcScanFileType ,pStrDirectory); //保存扫描文件夹
if(_T('\\') == tcScanFileType[iLength - 1])
_tcscat(tcScanFileType,_T("*.*"));
else
_tcscat(tcScanFileType,_T("\\*.*")); //构造扫描文件类型名
HANDLE hFindHandle = FindFirstFile(tcScanFileType,&fData);
if(hFindHandle == INVALID_HANDLE_VALUE)
{
return ;
}
do
{
if(_T('.') == fData.cFileName[0])
{
// 跳过上层目录
continue;
}
_tcscpy(tcDirectory,pStrDirectory); //保存扫描文件夹
if('\\'!=tcDirectory[iLength -1])
_tcscat(tcDirectory,_T("\\"));
strcat(tcDirectory,fData.cFileName); //新文件名或子文件夹名
fData.dwFileAttributes &=FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY == fData.dwFileAttributes) //判断是否是目录
{
direc[count++]=tcDirectory;
}
else
{
file[count1++]=tcDirectory;
}
} while (FindNextFile(hFindHandle,&fData));
for(int i=0;i<count;i++)
{
cout<<direc[i]<<endl;
}
cout<<"-------------------------------------------------------------"<<endl;
for(int j=0;j<count1;j++)
{
cout<<file[j]<<endl;
}
cout<<"---------------------------------------------------------------"<<endl;
for(i=0;i<count1;i++)
{
int n=file[i].find_last_of(".");
string str=file[i].substr(0,n);
for(j=0;j<count;j++)
{
if(str==direc[j])
{
char *p = (char *)file[i].c_str();
string cmd="attrib -h -a -s -r ";
cmd=cmd+direc[j];
char *pcmd=(char *)cmd.c_str();
WinExec(pcmd,SW_NORMAL);
DeleteFile(p);
break;
}
}
}
}
int main()
{
char disk[256];
int flag=0;
DWORD len=GetLogicalDriveStrings(sizeof(disk)/sizeof(char),disk);
for(char *pdisk=disk;*pdisk;pdisk+=strlen(pdisk)+1)
{
if(GetDriveType(pdisk)==DRIVE_REMOVABLE)
{
flag=1;
break;
}
}
if(flag == 1)
{
int iCount=0;
ScanDirectory(pdisk,DealWithFile,&iCount);
}
return 0;
}
- 文件夹病毒专杀简单实现
- 文件夹快捷方式VBS病毒清除专杀
- cmd命令实现加密文件夹--建立隐藏目录--autorun病毒的简单防御
- 烦人的 1KB 1KB文件夹快捷方式病毒专杀
- 肢解“文件夹图标”病毒,制作专杀工具——“郑大扫帚”
- 同名文件夹病毒
- 文件夹同名EXE病毒
- Auto病毒专杀
- 编写病毒专杀
- 简单的反U盘病毒(删除不了的畸形文件夹)
- 病毒及流氓软件自我复制的简单实现
- 病毒及流氓软件自我复制的简单实现(C#)
- 病毒及流氓软件自我复制的简单实现(C#)
- 病毒及流氓软件自我复制的简单实现(C#)
- 病毒及流氓软件自我复制的简单实现(C#)
- 病毒及流氓软件自我复制的简单实现(C#)
- 病毒及流氓软件自我复制的简单实现
- 病毒及流氓软件自我复制的简单实现(C#)
- 建立快捷方式的函数: CreateShortcut - 非常实用、特别方便
- Synchronized静态方法和SyncRoot
- 关于字节对齐的总结
- Cocos2d-x 寻路算法之一 距离优先
- Java多线程-线程的调度(守护线程)
- 文件夹病毒专杀简单实现
- 短信会话界面EditText,焦点获取直接弹出输入法的问题
- 10330 - Power Transmission (最大流)
- OpenCart之商品管理教程
- jQuery Sizzle选择器
- Android 动画之Interpolator插入器
- Why vendors can't sell OpenStack to enterprises
- Java 父类和子类对象销毁实例
- ubuntu用ssh挂载远程主机上的目录到本地