bool CheckOneInstance(LPCTSTR mutexName) { HANDLE hOnceRunMutex ; wstring strClassName= mutexName; bool bFind = false; hOnceRunMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,strClassName.c_str()); if(hOnceRunMutex==NULL) { bFind = false; hOnceRunMutex=CreateMutex(NULL,TRUE,strClassName.c_str()); } else { bFind = true; } return !bFind; } int _tmain(int argc, _TCHAR* argv[]) { if (CheckOneInstance(L"mytest")) { cout << "运行成功" << endl; } else { cout << "运行失败" << endl; } getchar(); return 0; } 由于互斥对象是内核对象,因此可以跨进程访问,作为控制程序只有一个运行实例的手段。