I did some googling in trying to figure out which was the best method in win32 to ensure that only one instance of an application was running and it seems most people agree that mutexes are best suited for the job... but i had a question:
What if your program crashes before releasing the mutex, would this not prevent you from then opening legitimate instances afterward?
"If a thread terminates without releasing its ownership of a mutex object, the mutex object is considered to be abandoned. A waiting thread can acquire ownership of an abandoned mutex object."