从进程访问FileName仅在Debug语句后有效吗?

时间:2018-06-23 11:05:12

标签: c# visual-studio

我这里有一个有趣的问题,因为该错误仅在访问FileName之前没有Debug语句时出现。

//make a new process
process = new Process();
process.StartInfo.FileName = executable;
process.Start();
Debug.Print((process.MainModule == null).ToString());
Debug.Print(process.MainModule.FileName);
path = process.MainModule.FileName;
process.Kill();

我基本上只想访问我交给它的可执行文件的文件路径(例如:chrome.exe,因此它会找到路径,以后我可以获取图标,等等)。但是,如果没有Debug语句,代码将根本无法工作,并会为

吐出NullReferenceException
path = process.MainModule.FileName

我很肯定这不是获取可执行文件的文件路径的最有效方法,如果有人对此有另一种方法或对为什么发生这种情况有任何了解,将不胜感激。

1 个答案:

答案 0 :(得分:0)

上面的示例实际上是一种处理此问题的可怕方法。某些进程不会终止,并且启动进程所花费的时间会因您尝试启动的进程而异。我建议您设置所有已安装程序的列表,并对其进行排序,这将更加可靠。

这里是有关如何进行处理的链接(Get installed applications in a system)。