在 vb.net 中获取可执行文件的路径?

Posted

技术标签:

【中文标题】在 vb.net 中获取可执行文件的路径?【英文标题】:Get the path to an execuatble in vb.net? 【发布时间】:2015-09-16 13:45:29 【问题描述】:

我正在制作一个任务管理器类型的程序,我需要获取每个文件的路径。我不想从我自己的可执行文件中找出目录。只是外部文件。

这是获取可执行文件的开始:

For Each OneProcess As Process In Process.GetProcesses  

【问题讨论】:

你使用什么语言? 请将代码缩进四个空格,而不是加粗。此外,了解您正在使用哪种语言进行编码会很有用。请通过编辑将其添加到您的问题中,并添加适当的标签。 @Anders 感谢您的评论。我改了标题。希望现在好多了。有时我可以在“代码”框中获取代码,但有时我无法让它工作。但再次感谢:) 【参考方案1】:

要查找任何进程的目录和文件名,请使用MainModule.FileFileName 这是帮助的示例代码

System.Diagnostics.Process mm22= System.Diagnostics.Process.GetProcessesByName("notepad")[0];
string stp = mm22.MainModule.FileName; //location of the executable with filename

【讨论】:

非常感谢您的回答。我现在才回到这个页面。还是新手,不知道我所有的问题都在我的“个人资料”页面中? 第二行抛出异常。我在做 vb.net 并且不太了解 C#。我通过 C# 到 VB 转换器运行代码,这就是它想出的......这是引发异常的昏暗 stp 部分代码转换好吗?将 mm22 调暗为 System.Diagnostics.Process = Process.GetProcessesByName(OneProcess.ProcessName)(0) 将 stp 调暗为 String = mm22.MainModule.FileName 错误如下:System.ComponentModel.Win32Exception 未处理 ErrorCode=-2147467259 HResult=-2147467259 Message=Access is denied NativeErrorCode=5 在收到您的来信之前再发表评论,(我保证)。如果我能让该代码正常工作,我就可以毫无问题地从每个文件中提取图标! 您需要以更高的权限运行您的程序并尝试。【参考方案2】:

我遇到了同样的问题.. 浏览答案,接近但它不是我所例外的,然后我看到 GetProcessesByName 让我想起了 javascript..所以我将其更改为 GetProcessById。

For Each p In System.Diagnostics.Process.GetProcesses()
  ListBox1.Items.Add(p.ProcessName & " - " & p.Id.ToString() & " - ")
Next
 Dim id = ListBox1.SelectedItem.ToString.Split("-")(1).Trim
 Dim p As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessById(id)
MsgBox( p.MainModule.FileName)

【讨论】:

以上是关于在 vb.net 中获取可执行文件的路径?的主要内容,如果未能解决你的问题,请参考以下文章

为文本保存设置正确的文件路径 - vb.NET [重复]

如何获取调用 python 可执行文件的路径 [重复]

C++ Windows - 通过可执行文件路径获取进程的 PID

Linux下获取可执行程序的绝对路径

获取 AIX 上正在运行的进程的可执行文件的完整路径

用VB.NET和VC.NET编译出来的文件是IL格式还是纯PE(EXE)文件格式?