Дубликат этот вопрос.
Обновить - это не точный дубликат. Смотрите мое решение.
Я вижу процесс java.exe в проводнике процессов, и двойной щелчок по нему дает мне его рабочий каталог и аргументы командной строки.
В .NET я запускаю следующий код и получаю процесс с тем же PID, но указанные выше поля пусты. Судя по всему, это задокументировано.
foreach (Process process in Process.GetProcessesByName("java"))
{
...
}
Итак, как я получить правильные значения поля startinfo, не заглядывая в память процесса вручную (другими словами, я хотел бы украсть этот код откуда-то, вместо того, чтобы самому взламывать память процесса).





Согласно сообщению, которое вы указали в своем вопросе, способ сделать это - заглянуть в память процесса. Классы .NET НЕ будут загружать данные, поскольку вы не запускали процесс из .NET.
Я написал код для этого (Сообщение блога и прямая ссылка на zip).
Вкратце: этот вопрос очень помог. Я взял код CodeProject и заключил его в утилиту командной строки, а затем в оболочку C#.