Ответ 1
Это даст вам список запущенных процессов, которые работают с тем же идентификатором сессии, что и текущий процесс. Я думаю, это то, что вы хотите.
Process[] runningProcesses = Process.GetProcesses();
var currentSessionID = Process.GetCurrentProcess().SessionId;
Process[] sameAsThisSession =
runningProcesses.Where(p => p.SessionId == currentSessionID).ToArray();
foreach (var p in sameAsthisSession)
{
Trace.WriteLine(p.ProcessName);
}