关于多用户模式下同一个.exe只能运行一个

把程序添加到所有程序->启动 目录下,让程序开机自动运行,用同一账户远程登录同一电脑,添加到启动目录下面的程序只能运行一次,可以在任务管理器下面查看。

BOOL CTestApp::InitInstance(){// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControlsEx()。否则,将无法创建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名SetRegistryKey(_T("应用程序向导生成的本地应用程序"));//存在判断bool bExist=false;HANDLE hMutex = ::CreateMutex(NULL, TRUE, TEXT("Global\\Test")); if (GetLastError() == ERROR_ALREADY_EXISTS){// 如果已有互斥量存在则释放句柄并复位互斥量 CloseHandle(hMutex);hMutex = NULL;bExist = true;}//CMutex Mutex(FALSE, szAStartClass, NULL);//if (Mutex.Lock(0)==FALSE) //{// bExist=true;//}CWnd * pTestWnd = CWnd::FindWindow(NULL, TEXT("Test"));if (NULL != pTestWnd){bExist =true;//还原窗口if (pTestWnd->IsIconic()) {pTestWnd->ShowWindow(SW_RESTORE);}//激活窗口pTestWnd->SetActiveWindow();pTestWnd->BringWindowToTop();pTestWnd->SetForegroundWindow();}//结果处理if (bExist){return FALSE;}CTestWndDlg dlg;...} 

你可能感兴趣的:(关于多用户模式下同一个.exe只能运行一个)