Asi lo hago en C#
Código:
//Verificamos que no haya una instancia del servidor abierta
int iProcess;
iProcess = System.Diagnostics.Process.GetProcessesByName(
System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length;
if (iProcess != 1)
{
MessageBox.Show("Ya se encuentra en ejecucion el\n" + Application.ProductName, Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.ExitThread();
}
else
{
//Lanzo la aplicacion
}
Espero te sea de utilidad