#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;
}

文件夹病毒专杀简单实现相关推荐

  1. 隐藏专杀工具文件夹病毒专杀工具

    题记:写这篇博客要主是加深自己对隐藏专杀工具的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 下载地址:http://download.csdn.net/detail/yousuo ...

  2. 一个半成品小病毒专杀

    一个半成品小病毒专杀 最近一个文件夹伪装病毒在同学的电脑内肆虐啊,动手写了一个小时就写不下去了.不想写清除部分,只有检测部分的代码,其实检测出来的时候,顺手就可以杀掉了.最近考试耗费的时间多,懒得写了 ...

  3. 了解lpk.dll是什么病毒以及lpk.dll病毒专杀方法

    pk.dll病毒是当下比较流行的一类病毒,而正常系统本身也会存在lpk.dll文件,这足以说明这类病毒的危险性.系统本身的lpk.dll文件位于C:WINDOWSsystem32和C:WINDOWSs ...

  4. lockbit勒索病毒专杀工具,.lockbit勒索病毒数据恢复,lockbit勒索病毒解密处理,数据库恢复

    lockbit勒索病毒专杀工具,.lockbit勒索病毒数据恢复,lockbit勒索病毒解密处理,数据库恢复 目录: lockbit勒索病毒简述 计算机感染lockbit勒索病毒后的表现 lockbi ...

  5. html vb病毒,HTML_用vbs实现的一款Worm.Win32.VB.fw病毒专杀,在写了《Worm.Win32.VB.fw分析与清 - phpStudy...

    用vbs实现的一款Worm.Win32.VB.fw病毒专杀 在写了<Worm.Win32.VB.fw分析与清除方案>后,也没想到要写什么专杀,不过这些天好多同学都说中了这只病毒,我要是一个 ...

  6. 自己动手写个病毒专杀工具

    下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdf 大数据测试过程.策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 此 ...

  7. 杀毒我做主:病毒专杀工具自己编写

    如今病毒木马层出不穷,变种也是一个接一个.反病毒公司以及各大安全公司随着影响很大的病毒的出现都会免费提供病毒专杀工具,这个举措对普通用户来 说确实很有帮助.其实写病毒专杀工具也不像大家想象的那么神秘, ...

  8. wsctf.exe病毒专杀

    wsctf.exe病毒专杀 中了病毒wsctf.exe和explorer.exe,一般解决: --按"Ctrl+Alt+Del"调出Windows任务管理器,结束掉EXPLORER ...

  9. rundl132.exe,logo1_.exe 病毒专杀工具

    重要提示:本人测试无效(测试时间:20061115) 最后做法:系统重新安装.再用瑞星杀毒工具 rundl132.exe,logo1_.exe 病毒专杀工具 中毒了,中毒了!rundll.exe ru ...

最新文章

  1. ios在textview禁用tab的代码
  2. 关于Linux中权限列中的加号及点的深度探索
  3. 算法题:实现一个IP白名单过滤器
  4. 结对编程——四则运算过程
  5. python学习之if语句
  6. ★宣传广告变成社会标准
  7. c# 2.0实现摄象头视频采集,拍照,录象
  8. python 按条件选择行和列数据_小白学数据结构-排序算法Python(冒泡、选择、快速、希尔等等)...
  9. Linux——安装之磁盘分区
  10. PDF 补丁丁 0.6.0.3369 版发布(修复保存文件时文件名替代符失效的问题)
  11. 哎呀,搬运blog好累啊,96篇呢QwQ
  12. Java基础__Integer类型中的自动装箱
  13. 几个北邮和交大学霸的公众号,值得学习
  14. MarathonLb的负载研究
  15. Java数据结构与算法——图
  16. 关联分析---Apriori算法和FPGrowth算法挖掘规则计算频繁项间的置信度
  17. 手把手教你清除WIN7的C盘垃圾
  18. Android 自定义View实现拖动滑块完成验证
  19. 让cocos2d-x 3.0读取cocostudio中的csb文件
  20. 【CF487E】Tourists

热门文章

  1. 比一比:一个普通美国人的工资单
  2. Educational Codeforces Round 104 (Rated for Div. 2)
  3. vbscript错误代码及对应解释大全 1
  4. 焦(jiao)作(yi)一中培训游记
  5. 我所知道JVM虚拟机之聊聊JVM虚拟机
  6. 华为畅享max有没有人脸识别_华为畅享9s支持人脸识别吗 人脸解锁可以这样设置...
  7. html下拉框内容新增,给html下拉框控件自动添加数据
  8. 域名解析与nginx配置
  9. MySQL到底是如何解决幻读问题
  10. 春节知识不完全手册[转载]