c# - 从进程访问 FileName 仅在 Debug 语句之后有效?

标签 c# visual-studio

我在这里遇到一个有趣的问题,因为只有在访问 FileName 之前没有调试语句时才会出现此错误。

//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

我肯定这不是获取可执行文件路径的最有效方法,如果有人对此有其他方法或知道为什么会发生这种情况,我们将不胜感激。

最佳答案

上面的例子实际上是一种糟糕的处理方式。有些进程不会终止,并且启动进程所需的时间会根据您尝试启动的内容而有很大差异。我建议设置所有已安装程序的列表,然后对其进行排序,这样会更可靠。

这里有一个关于如何处理它的链接(Get installed applications in a system)。

关于c# - 从进程访问 FileName 仅在 Debug 语句之后有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51000559/

相关文章:

c# - SolidWorks CAM API

c# - 在 C# 中使用 lambdas 对数组执行多个函数

c# - 在 C# 中表示参数化枚举的最佳方式?

visual-studio - PowerBI Web 应用仪表板示例错误 AADSTS50011

wpf - Visual Studio 2010 - WPF - 背景图像缩放问题

c# - 静态对象/变量是否存储在 .NET 上的 Web 应用程序的缓存/ session 中?

c# - 如何使用 C# 和 LINQ to Twitter 库更新 Twitter 上的状态

java - 捕获服务器响应

visual-studio - Visual Studio 扩展 : Access VS Options from arbitrary DLL

C 编程的代码助手