1.判断要卸载的软件是否在运行
CWnd *fiturbo=FindWindow(NULL,TEXT("xxxxxxx"));//获取要卸载软件的句柄
if(fiturbo!=NULL)//判断程序是否运行
fiturbo->PostMessageW(WM_SYSCOMMAND, SC_CLOSE,0);//关闭应用程序
2.拷贝卸载软件到临时目录
CopyFile(strSourcePath+UNINSTALL_NAME,tempFilePath+UNINSTALL_NAME, TRUE);
3.启动临时目录中的卸载软件
//UNINSTALL_NAME 需启动的软件名称
//strSourcePath 传递的参数
//tempFilePath 启动那个目录下的应用程序
ShellExecute(NULL,_T("open"),UNINSTALL_NAME,strSourcePath,tempFilePath,SW_SHOWNORMAL);
4.删除需卸载软件目录下的文件
函数:
1.获取应用程序安装目录
CHAR exeFullPath[256];
GetModuleFileNameA(NULL,exeFullPath,MAX_PATH);
CString strSourcePath=exeFullPath;
int point=strSourcePath.ReverseFind('\\');
strSourcePath=strSourcePath.Left(point+1);
2.获取临时文件目录
GetTempPathA(MAX_PATH, exeFullPath);
3.获取桌面快捷方式存放路径
SHGetSpecialFolderPathW(0,exeFullPath,CSIDL_DESKTOPDIRECTORY,0);
缺陷:
无法从注册表中获取程序的安装路径,无法删除注册表中信息。没有实现删除启动栏程序信息。