首先推荐下上个帖子 有兴趣移步 哈哈 
网络编程通信方面:
http://bbs.pediy.com/showthread.php?p=1402027#post1402027
病毒查杀代码来自[部分更改]:
http://bbs.pediy.com/showthread.php?t=204845
服务管理代码来自][添加禁止/启动服务]:
http://bbs.pediy.com/showthread.php?t=205382
开始进入正题。 为了阅读体验,我源码尽量少贴,只贴关键性代码(我认为的
)并不是故意
环境VS2012 WIN10 X64
界面【具体操作有动画效果】:







●
HomePage.h HomePage.cpp
[索引即可,并不关键]
VirusScanner.h VirusScanner.cpp
DWORD WINAPI VirusScanner::AllProc(LPVOID lpThreadParameter)
{
m_this->isInThead=true;
WCHAR DiskName[MAX_PATH] = {0};
GetLogicalDriveStrings(MAX_PATH,DiskName);
int i = 0,j=0;
for (; DiskName[i]!='\0'&& i < MAX_PATH; i++,j++)
{
m_this->TraverseFolder(DiskName,L".txt.exe.dll");
i+=wcslen(&DiskName[i]);
}
if (!m_this->m_ButtonState)
{
m_this-> m_BackgroundPic=IDB_BITMAP5;//背景图片
m_this-> MovebkPic(m_this->m_BackgroundPic);
m_this-> m_ButtonState=true;
m_this-> isInThead=false;
// m_AllKill.ShowWindow(SW_SHOW);
// m_AssignButton.ShowWindow(SW_SHOW)
m_this-> m_StartupVirus1.ShowWindow(SW_SHOW);
m_this-> m_StartupVirus2.ShowWindow(SW_SHOW);
}
return 0;
}
DWORD WINAPI VirusScanner::LightningProc(LPVOID lpThreadParameter)
{
//C:\\Program Files (x86) C:\\Program Files D:\Program Files
m_this->isInThead=true;
WCHAR DiskName[MAX_PATH][MAX_PATH] = {
_T("C:\\Program Files (x86)"), //闪电杀毒查杀的范围
_T("C:\\Program Files"),
_T("D:\\Program Files"),
_T("D:\\Program Files (x86)"),
_T("E:\\Program Files"),
_T("E:\\Program Files (x86)"),
};
int i = 0;
for (; i<7; i++)
{
m_this->TraverseFolder(DiskName[i],L".txt.exe.dll.mp3.avi"); //填写要扫描的类型
}
if (!m_this->m_ButtonState)
{
m_this-> m_BackgroundPic=IDB_BITMAP5;//背景图片
m_this-> MovebkPic(m_this->m_BackgroundPic);
m_this-> m_ButtonState=true;
m_this-> isInThead=false;
// m_AllKill.ShowWindow(SW_SHOW);
// m_AssignButton.ShowWindow(SW_SHOW)
m_this-> m_StartupVirus1.ShowWindow(SW_SHOW);
m_this-> m_StartupVirus2.ShowWindow(SW_SHOW);
}
return 1;
}
索引AssignKill.h AssignKill.cpp
WIN32_FIND_DATAW findFileData={0};
TCHAR szFind[MAX_PATH] = {_T("\0")};
CString pipei=filetype;//pipei 匹配O(∩_∩)O~
BOOL bRet;
CString fileRootPath = szName;
CString filePath = fileRootPath+_T("\\*.*");
HANDLE hwnd=FindFirstFile(filePath,&findFileData);
if (hwnd==INVALID_HANDLE_VALUE)//没找到文件
{
MessageBox(_T("该文件路径不存在"),_T("错误"),NULL);
return;
}
while (true)
{
if (_tcscmp(findFileData.cFileName,_T("."))==0||
_tcscmp(findFileData.cFileName,_T(".."))==0 )
{
bRet=FindNextFile(hwnd,&findFileData);
if (!bRet)
{
break;
}
continue;
}
CString path = fileRootPath+ _T("\\")+ findFileData.cFileName;
int index = path.ReverseFind(_T('.'));
CString pix = path.Right(path.GetLength()-index);
if (pipei.Find(pix)!=-1)
{
char *MD5="bacf0d5cec1d91f252b42c39d0bea5ca";//你认为的文件是病毒的MD5的值
CStringA ff(path);
char * h = md5FileValue(ff.GetBuffer());
if (strcmp(h,MD5)==0)
{
//DeleteFile(path);
MessageBox(L"已查杀");
}
}
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
_tcscpy_s(szFind,MAX_PATH,szName);
_tcscat_s(szFind,_T("\\"));
_tcscat_s(szFind,findFileData.cFileName);
TraverseFolder(szFind,pipei);
}
bRet=FindNextFile(hwnd,&findFileData);
if (bRet==0)
{
break;
}
}
ServiceManagement.h ServiceManagement.cpp
[上个帖子有介绍]
UninstallTool.h UninstallTool.cpp.cpp
//加载软件信息
void UninstallTool::UninstallIndex()
{
LONG nRet=RegOpenKeyEx(RootKey,lpSubKey,0,KEY_ENUMERATE_SUB_KEYS|KEY_QUERY_VALUE,&hkResult);
if (nRet!=ERROR_SUCCESS)
{
return ;
}
DWORD dwIndex=0;
//循环遍历子键
while (true)
{
DWORD dwKeyLen=MAX_KEY_LENGTH;
//WCHAR szNewKeyName[MAX_PATH]={};
TCHAR szNewKeyName[MAX_KEY_LENGTH] ;
nRet=RegEnumKeyEx(hkResult,dwIndex,szNewKeyName,&dwKeyLen,NULL,NULL,NULL,NULL);
if (nRet!=ERROR_SUCCESS)
{
break; //可断点检查相应错误
}
//通过得到的子键组合新的子键路径
WCHAR strMidReg[MAX_PATH]={};
swprintf_s(strMidReg,L"%s%s%s",lpSubKey,L"\\",szNewKeyName);
//打开新的子键获取句柄
HKEY hkValueKey=0;
RegOpenKeyEx(RootKey,strMidReg,0,KEY_QUERY_VALUE,&hkValueKey);
//获取键值
DWORD dwNameLen=255;
DWORD dwtype;
RegQueryValueEx(hkValueKey,L"DisplayName",0,&dwtype,(LPBYTE)SoftInfo.szSoftName,&dwNameLen);//软件名
if(m_VecSoftInfo.size()>1)
{
if ((wcscmp(SoftInfo.szSoftName,m_VecSoftInfo[m_VecSoftInfo.size()-1].szSoftName)==0))
{
dwIndex++;
continue;
}
}
m_UniListCtrl.InsertItem(0,SoftInfo.szSoftName);
dwNameLen=255;//如果没有重新赋值 下一次将获取不到路径
dwtype=0; //也许dwtype并不要但是 重新赋值并无坏处吧
RegQueryValueEx(hkValueKey,L"UninstallString",0,&dwtype,(LPBYTE)SoftInfo.szSoftUniPath,&dwNameLen);//卸载路径
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"DisplayIcon",0,&dwtype,(LPBYTE)SoftInfo.szSoftIco,&dwNameLen);//光标路径
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"DisplayVersion",0,&dwtype,(LPBYTE)SoftInfo.szSoftVer,&dwNameLen);//版本号
m_UniListCtrl.SetItemText(0,1,SoftInfo.szSoftVer);
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"Publisher",0,&dwtype,(LPBYTE)SoftInfo.szSoftVenrel,&dwNameLen);//发布厂商
m_UniListCtrl.SetItemText(0,3,SoftInfo.szSoftVenrel);
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"InstallDate",0,&dwtype,(LPBYTE)SoftInfo.szSoftDate,&dwNameLen);//安装日期
m_UniListCtrl.SetItemText(0,2,SoftInfo.szSoftDate);
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"URLInfoAbout",0,&dwtype,(LPBYTE)SoftInfo.szURLInfo,&dwNameLen);//网站
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"HelpLink",0,&dwtype,(LPBYTE)SoftInfo.HelpLink,&dwNameLen);//网站
dwNameLen=255;
dwtype=0;
RegQueryValueEx(hkValueKey,L"InstallLocation",0,&dwtype,(LPBYTE)SoftInfo.szSoftInsPath,&dwNameLen);//安装路径
dwNameLen=255;
dwIndex++;
m_VecSoftInfo.push_back(SoftInfo);
}
}
void StartupManager::initListBox()
{
LONG nRet=RegOpenKeyEx(RootKey,lpStartupSubKey,0,KEY_ENUMERATE_SUB_KEYS|KEY_QUERY_VALUE,&hkStartupResult);
if (nRet!=ERROR_SUCCESS)
{
return ;
}
DWORD dwIndex=0;
//循环遍历子键
while (true)
{
DWORD dwKeyLen=MAX_KEY_LENGTH;
nRet=RegEnumValue(hkStartupResult,dwIndex,info.szNewKeyName,&dwKeyLen,NULL,NULL,(PBYTE)info.szNewValueName,&dwKeyLen);
if (nRet!=ERROR_SUCCESS)
{
break; //可断点检查相应错误
}
TCHAR SynthesisStr[2048]; //合成字符串
_stprintf_s(SynthesisStr,_T("[%s]%s"),info.szNewKeyName,info.szNewValueName);
m_StartupListCtrl.InsertItem(dwIndex,SynthesisStr);
m_StartupListCtrl.createItemButton(dwIndex,
2, //点击按钮(在第二例)处理的值 未做
this->GetSafeHwnd() ); //创建按钮
dwIndex++;
m_VecStartupInfo.push_back(info);
}
RegCloseKey(hkStartupResult);
}
CleanSpace.h CleanSpace.cpp
/**清理垃圾回收站*/
VOID CleanSpace::CleanRubbishStation()
{
SHEmptyRecycleBin(NULL, NULL, SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND);
}
/**清理运行记录*/
VOID CleanSpace::CleanRunHistory()
{
SHDeleteKey(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU"));
}
/**清理文档记录*/
VOID CleanSpace::CleanDocumentHistory()
{
CString strPath;
BOOL bSuccess = SHGetSpecialFolderPath(NULL, strPath.GetBuffer(MAX_PATH), CSIDL_RECENT, FALSE);
strPath.ReleaseBuffer();
if (bSuccess)
{
EmptyDirectory(strPath);
}
SHDeleteKey(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RecentDocs"));
}
/**清理上次用户登录记录*/
VOID CleanSpace::CleanPrevUserHistory()
{
SHDeleteValue(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"),
TEXT("DefaultUserName"));
SHDeleteValue(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"),
TEXT("AltDefaultUserName"));
SHDeleteValue(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Winlogon"),
TEXT("DefaultUserName"));
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课