获取正在运行的文件的目录

时间:2013-10-17 01:58:08

标签: vb.net process

是否可以使用Process.GetProcesses()方法检索正在运行的文件的文件目录?

2 个答案:

答案 0 :(得分:0)

您可以这样做:

Dim processes As System.Diagnostics.Process()
processes = System.Diagnostics.Process.GetProcesses
Dim process As System.Diagnostics.Process
For Each process In processes
    listProcess.Items.Add(process.ProcessName.ToString + " " + process.Id.ToString + " " + process.MainModule.FileName.ToString)
Next

但是可能存在“拒绝访问”类型错误,因为很多这些进程将在受保护的目录中运行,例如C:\Windows\

答案 1 :(得分:0)

您可以获取正在运行的每个进程的命令行,并且您正在寻找的路径可能是参数的一部分,然后您可以从结果中解析出来。

例如,notepad.exe将显示其打开文件的完整路径,因为它是命令行参数,因此它可能如下所示:

"C:\WINDOWS\system32\NOTEPAD.EXE" C:\Users\J.Scott\Desktop\testfile.php

代码:

Dim cLineSearch As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_Process")

For Each cLine As ManagementObject In cLineSearch.[Get]()

Try
    Debug.Print(cLine("CommandLine").ToString)
Catch ex As Exception
    ' Usually "Object not set to instance of an object" error
    'Debug.Print(ex.Message)
End Try

Next