Одна проблема с подходами ToolHelp / ManagementObject заключается в том, что родительский процесс уже мог завершиться.
Функция GetStartupInfo Win32 (используйте PInvoke, если нет эквивалента .NET) заполняет структуру, которая включает заголовок окна. Для консольного приложения Win32 «app.exe» эта строка заголовка «app» при запуске из cmd и «c: \ full \ path \ to \ app.exe» при запуске из проводника (или отладчика VS).
Конечно, это взлом (возможны изменения в других версиях и т. Д.).
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int main()
{
STARTUPINFO si;
GetStartupInfo(&si);
MessageBox(NULL, si.lpTitle, NULL, MB_OK);
return 0;
}