Utilizar a System.Diagnostics e System.Security.
Process p;
Process[] processos;
processos = Process.GetProcessesByName("calc");
if (processos.Length == 0)
{
p = new Process();
ProcessStartInfo info = new ProcessStartInfo();
//para executar o processo com um usuario e senha
//info.UserName = "user";
//info.Password = SecureString("pass");
//info.UseShellExecute = false;
info.FileName = "calc";
p.StartInfo = info;
p.Start();
}
protected SecureString SecureString(string pass)
{
SecureString ss = new SecureString();
foreach (char c in pass)
{
ss.AppendChar(c);
}
return ss;
}