Mutex로 중복실행 방지

C++ 2012. 2. 24. 20:45



Windows 7에서 테스트 완료

// "Global\\" 을 앞에 붙여줘야 다른 윈도우 계정에서도 중복실행이 된다.
program_mutex_ = CreateMutexW(NULL, FALSE, L"Global\\뮤텍스이름");

DWORD mutex_error = GetLastError();
if (mutex_error == ERROR_ALREADY_EXISTS) {
cout << "이미 실행중입니다." << endl;
return false;
}
if (mutex_error != 0) {
cout << "mutex error : " << GetLastError() << endl;
wxMessageBox(msg);
}

만약 어드민 권한의 계정으로 mutex가 생성된 상태에서
일반 유저가 중복 프로그램 실행하면  ERROR_ACCESS_DENIED (5) 에러를 받는다.

기타 자세한 설명에 대한 블로그