Обходной путь для ошибки в моно: неправильный Process.ProcessName(разрешенный)
Если вы работаете с моно и используете Process.ProcessName
, вы можете получить неправильные результаты на некоторых компьютерах.
Например, вместо имени процесса "kwrite
" вы можете получить "kdeinit4
" (см. SUSE).
На Ubuntu я даже видел полную ерунду вроде "kdeinit4;5535948c (deleted)
" вместо "kwrite
".
Примечание. На других компьютерах результат может быть правильным.
Если я использую Process.MainModule.ModuleName
, он извлекает одно и то же неправильное имя.
И если я использую Process.MainModule.FileName
, это дает неправильный путь. Кроме того, эти команды Чрезвычайно медленны.
Итак, все, что я пробовал, полно ошибок.
Что я могу сделать?
Ответы
Ответ 1
Обходной путь можно выполнить с помощью двух строк:
String sProcFile = String.Format("/proc/{0}/comm", proc.Id);
String sProcName = File.ReadAllText(sProcFile).Trim();
Он работает как шарм на всех компьютерах, где ProcessName
не работает.