VC++获取Windows已安装软件——遍历方式

CString strWildcard = lpszFileName; strWildcard += _T("//*.*"); CFileFind finder; BOOL bFind = FALSE; //查找文件 bFind = finder.FindFile(strWildcard); while (bFind) { //查找下一个文件 bFind = finder.FindNextFile(); //判断找到文件的是否包含"."或".." if (finder.IsDots()) { continue; } //获得找到文件的名称 if (finder.IsDirectory()) { //找到文件的路径 CString strFilePath = finder.GetFilePath(); //递归查找文件 FindLocalAllSoft(strFilePath); } //获得找到文件的名称 CString strFilePath2 = finder.GetFilePath(); CString strFileName = finder.GetFileName(); //文件过滤 if(strFilePath2.Find(".lnk") != -1 && strFilePath2.Find("卸载") == -1 && strFilePath2.Find("uninstall") == -1 && strFilePath2.Find("Uninstall") == -1 && strFilePath2.Find("删除") == -1) { if(GetShortcutTarget(strFilePath2).Find(_T(".exe")) != -1) { CString Path2 = NULL; Path2 = GetPath(); CString Path = Path2; Path2 += "Desk//AllSoft//"; _CopyFile(strFilePath2, Path2 + strFileName, FOF_SILENT | FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION); } } /*CString Path2 = NULL; Path2 = GetPath(); CString Path = Path2; Path2 += "Desk//全部软件//"; _CopyFile(strFilePath + "//" + strFileName + "//" + strFileName, Path2 + strFileName, FOF_SILENT | FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION);*/ //CListBox* pListBox = (CListBox*)GetDlgItem(IDC_FILELIST); //pListBox->AddString(strFileName); } //结束查找 finder.Close();

//复制全部软件

//开始菜单文件夹
 TCHAR MyDir[_MAX_PATH]; 
 SHGetSpecialFolderPath(hwnd ,MyDir,CSIDL_COMMON_STARTMENU,0);
 CString ddd = MyDir;

//系统快捷方式文件夹

 way.FindLocalAllSoft(ddd);

 SHGetSpecialFolderPath(hwnd , MyDir, CSIDL_PROGRAMS, 0);
 ddd = MyDir;
 ddd += ".";

 

通过遍历上面两个文件夹就能查找到系统已安装软件!

你可能感兴趣的:(VC++获取Windows已安装软件——遍历方式)