Also ich finde C# ist "Leicht" durch das net kann man sehr schon sachen erstellen.

Hir mal ein paar Quellen wo man sehr gute hilfe bekommet:

http://dotnet-snippets.de/
http://dotnet-forum.de/
Das Buch hab ich und das ist für den anfang recht gut: Der Visual C#-Programmierer: Visual C# lernen - Professionell anwenden - Lösungen nutzen

Das war einer meiner aller ersten Codes in C#, dammit kann man ermitteln ob das Programm mehrmals gestartet wird. Es würde auch mit Mutex funzen aber das wusste ich zu der Zeit nicht.

Code:
// using ProcessRunCheck

// [ Funktion ] Pragamm auf bereits gestarteten Process überprüfen.
// Aufruf:
// +-->  ProcessRunCheck.ProcessRunCheck Process = new ProcessRunCheck.ProcessRunCheck();
// +-->  if (Process.ProgrammProcessRunCheck("ProgrammRunCheck") == "ProgrammRun") this.Close();
// Rueckmeldung:
// +-->  "ProgrammRun" / "ProgrammNotRun" / "Error"

using System;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace ProcessRunCheck
{
    class ProcessRunCheck
    {
        /// <summary>
        /// Progamm auf bereits gestarteten Process überprüfen. V 1.0
        /// By  Oliver G
        /// </summary>
        /// <param name="Taskname"></param>
        /// <returns></returns>
        public string ProgrammProcessRunCheck(string Taskname)
        {
            string Rueckmeldung = null;
            try
            {
                int ProgrammCount = 0;
                Process[] ProgrammTask = Process.GetProcesses();
                foreach (Process ScannTask in ProgrammTask)
                {
                    if (ScannTask.ProcessName == Taskname) ProgrammCount = ProgrammCount + 1;
                }
                if (ProgrammCount > 1)
                {
                    MessageBox.Show("Error\nDas Programm kann nicht mehrmals gestartet werden.", "Programm Error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Rueckmeldung = "ProgrammRun"; 
                }
                else
                    Rueckmeldung = "ProgrammNotRun"; 
            }
            catch
            {
                Rueckmeldung = "Error"; 
            }
            return Rueckmeldung;
        }
    }
}
PS: Das ist eine eigen Klasse !

MFG Oliver G