0

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

4

2 回答 2

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\

于 2013-10-17T02:07:12.287 回答
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
于 2016-08-15T19:01:43.943 回答