В winapi есть функции EnumProcesses, OpenProcess с PROCESS_QUERY_INFORMATION, EnumProcessModules, GetModuleBaseName
В C# в Assembly: System. Есть internal static class NativeMethods (Microsoft.Win32.NativeMethods) где определеный вызовы этих функций.
Только есть особенность работы EnumProcesses, если она работает от имени 32 битного процесса, то вернет список, только 32х битных процессов. В 64 битной версии - всех.