是否可以使用Process.GetProcesses()
方法检索正在运行的文件的文件目录?
答案 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