要防止多个进程同时出现,我们要使用CreateMutex()函数来创建互斥对象 。互斥对象能够确保多个线程或进程对单个资源的互斥访问,也就是某个资源不会同时被两个或以上的线程或进程所访问 。我们通过下面的代码来创建一个互斥对象:
void myMutex(){HANDLE hMutex;DWORD dwErr;hMutex=CreateMutex(NULL,// 无安全描述FALSE,// 没有所有者"hack"); // 对象名if(hMutex==NULL)// hMutex为NULL标示创建失败{//MessageBox(NULL,"CreateMutex error!",NULL,MB_OK);}else{dwErr=GetLastError();if(dwErr==ERROR_ALREADY_EXISTS) //互斥对象已经存在{//MessageBox(NULL,"Application has already running",NULL,MB_OK);ExitProcess(0);}}}
上面的代码就可以确保只有一个进程在系统中 。
但如果程序是常驻内存的话,需要把上面的创建互斥对象的代码也加进去,否则每打开一个exe程序就会多一个hack.exe 。
……ShellExecute(NULL,"open",fPath,NULL,NULL,SW_SHOW); //执行B程序myMutex();……
另外,当文件关联处被改成c:\hack.exe ”%1” %*后,如果把hack.exe删掉的话,那么所有的exe程序都不能够运行了!解决的办法是把c:\Windows\regedit.exe改名成regedit.com(因为.exe文件类型运行不了,所以改成com才能正常运行),然后运行它,依次找到HKEY_CLASSES_ROOT\exefile\shell\open\command,双击“默认”字符串,将其数值改为「"%1" %*」就可以了 。当然,hack.exe还可以时刻监视注册表的这个键值是否是c:\hack.exe,如果不是就修改它,这样就可以确保hack.exe能够正常启动 。
自启动的方式主要有注册表启动、Active X启动、系统服务启动、SVCHOST.EXE加载启动等 。-End-
秒懂生活扩展阅读
- 如何做爆炒田螺才好吃
- wps表格怎么固定打印首行
- 哪种朝天钩最好
- 微信不能发图怎么办
- 如何做芦笋炒虾仁
- dnf怎么设置一键拾取
- 貂皮大衣什么样的好
- qq空间怎样更换主题
- 得力打印机怎么安装驱动
- 摩托车气门怎么调