解决单声道错误的方法:错误 Process.ProcessName

Workaround for bug in mono: Wrong Process.ProcessName

如果您使用单声道并使用 Process.ProcessName,您在某些计算机上可能会得到错误的结果。

例如,您可能会得到“kdeinit4”(在 SUSE 上看到)而不是进程名称“kwrite”。

在 Ubuntu 我什至看到了像“kdeinit4;5535948c (deleted)”而不是“kwrite”这样的废话。

注意:在其他计算机上结果可能是正确的。

如果我使用 Process.MainModule.ModuleName,它会返回相同的错误名称。 如果我使用 Process.MainModule.FileName 它给出了错误的路径。除此之外,这些命令非常慢。

所以无论我尝试什么,它都充满了错误。 我能做什么?

解决方法可以用两行来完成:

String sProcFile = String.Format("/proc/{0}/comm", proc.Id);
String sProcName = File.ReadAllText(sProcFile).Trim();

它在所有 ProcessName 失败的计算机上都非常有效。