NOTICE


 악성코드나 특정 프로그램에서는 중복(다중) 실행을 방지하기 위해 뮤텍스를 사용합니다. 


 TEST 프로그램이 있습니다. 이 프로그램은 실행했을 때 CreateMutex( ) API를 호출해서 뮤텍스를 생성하고 정상 종료되었을 때 ReleaseMutex( ) API를 호출해서 핸들을 반환합니다. 그리고 중복 실행 방지 코드가 포함되어 있다고 보겠습니다.

 여기서 TEST 프로그램이 정상적으로 종료된다면 추후 동작에 아무런 문제가 없습니다. 그러나 또 다른 TEST 프로그램을 다중으로 실행시키거나 동작하고 있는 TEST 프로그램을 강제로 종료시키고 난 뒤에 다시 실행시키려고 할 경우, 동작하지 않습니다.

 그 원리는 다음과 같습니다. 뮤텍스는 커널 오브젝트이기 때문에 모든 프로세스를 통 틀어서 하나만 존재합니다. 동일한 뮤텍스가 이미 있는 상태에서 CreateMutex( ) 또는 OpenMutex( )를 호출하면 에러가 발생하고 GetLastError( )를 사용하면 ERROR_ACCESS_DENIED나 ERROR_ALREADY_EXISTS 값이 나옵니다. 이 값을 확인해서 프로그램 실행 여부를 결정하는 것이 Mutex를 이용한 중복 실행 방지 코드입니다. 다음은 간단하게 작성된 중복 실행 방지 코드 입니다. 



 이상으로 "[Tip] 중복 실행 방지 코드_CreateMutex( )"에 대한 포스팅을 마치겠습니다.