我这里有一个有趣的问题,因为该错误仅在访问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语句,代码将根本无法工作,并会为
吐出NullReferenceExceptionpath = process.MainModule.FileName
我很肯定这不是获取可执行文件的文件路径的最有效方法,如果有人对此有另一种方法或对为什么发生这种情况有任何了解,将不胜感激。
答案 0 :(得分:0)
上面的示例实际上是一种处理此问题的可怕方法。某些进程不会终止,并且启动进程所花费的时间会因您尝试启动的进程而异。我建议您设置所有已安装程序的列表,并对其进行排序,这将更加可靠。
这里是有关如何进行处理的链接(Get installed applications in a system)。