void Scam_All(LPCTSTR szPath)
{
WIN32_FIND_DATA wfd;
HANDLE hFind;
CString sFullPath;
CString sFindFilter;
DWORD dwAttributes = 0;
sFindFilter = szPath;
sFindFilter += TEXT(
"\\*.*"
);
if
((hFind = FindFirstFile(sFindFilter, &wfd)) == INVALID_HANDLE_VALUE)
return
;
do
{
if
(_tcscmp(wfd.cFileName, TEXT(
"."
)) == 0 ||
_tcscmp(wfd.cFileName, TEXT(
".."
)) == 0)
{
continue
;
}
//
获取完整路径名
sFullPath = szPath;
sFullPath += TEXT(
"\\"
);
sFullPath += wfd.cFileName;
//
如果当前路径是文件夹,则需要递归文件夹中的文件
if
(wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
Scam_All(sFullPath);
}
//
否则,这是一个文件
else
{
//
输出正在搜索的文件路径界面,让用户直观的看到正在扫描的文件路径
m_szStatus = _T(
"正在扫描 : "
)+sFullPath;
SendMessage(WM_MYUPDATEDATA, FALSE);
//
判断是否是病毒
if
(IsMD5)
{
//MD5
查杀
//
如果是病毒 将文件信息保存到病毒Vector
if
(MD5Scan(sFullPath))
{
//
插入List中显示
m_List_Vir.InsertItem(0, wfd.cFileName);
//
文件名
m_List_Vir.SetItemText(0, 1, sFullPath);
//
文件路径
m_List_Vir.SetItemText(0, 2,
//
文件大小
GetShowSize(wfd.nFileSizeLow));
//
保存病毒信息到Vector容器
VIRINFO VirInfo;
_tcscpy_s(VirInfo.szVirName, wfd.cFileName);
_tcscpy_s(VirInfo.szVirPath, sFullPath);
_tcscpy_s(VirInfo.szVirSize, GetShowSize(wfd.nFileSizeLow));
m_vecVirInfo.push_back(VirInfo);
}
}
else
{
//
白名单查杀
//
如果是病毒 将文件信息保存到病毒Vector
if
(WhiteScan(sFullPath))
{
//
插入List中显示
m_List_Vir.InsertItem(0, wfd.cFileName);
//
文件名
m_List_Vir.SetItemText(0, 1, sFullPath);
//
文件路径
m_List_Vir.SetItemText(0, 2,
//
文件大小
GetShowSize(wfd.nFileSizeLow));
//
保存病毒信息到Vector容器
VIRINFO VirInfo;
_tcscpy_s(VirInfo.szVirName, wfd.cFileName);
_tcscpy_s(VirInfo.szVirPath, sFullPath);
_tcscpy_s(VirInfo.szVirSize, GetShowSize(wfd.nFileSizeLow));
m_vecVirInfo.push_back(VirInfo);
}
}
}
}
while
(FindNextFile(hFind, &wfd));
FindClose(hFind);
}