多重起動抑止にはいくつか方法があって、くろねこも紹介している様なMutexを使う方法がお手軽なので一般的だと思う。(DelphiではWin32だと[Delphi] アプリケーションの多重起動を防止する (Win32)、.Netだと[Delphi] アプリケーションの多重起動を防止する(.Net)で紹介)
このMutexを利用する方法は昔のWindowsの様なシングルユーザマルチタスクの時にはそれなりに機能してきた。今でもほとんどのケースで問題無く利用できている。ひとり1アカウントで1台のパソコンを占有する為だ。
しかし、XPから実装されたユーザ切替などを利用し始めると、そのパソコンではユーザの数だけ起動出来てしまう。これはMutexが1アカウントに対して固有の識別が出来る様に仕様が再定義されたからで、アカウントに依存せずOSの制御下に1つにするのであれば、Global Mutexを使用する。(この方法でもVirtual PCなどの仮想化テクノロジを使用した場合は別。)