¿Estás compilando la app bajo x86, x64, o neutral?.
¿Alguna limitación en la versión objetivo de .Net framework? (-LINQ)
¿C#, Vb.Net, o cualquiera de los dos?, no somos adivinos.
Puedes utilizar la Class "
Process":
Dim blacklisted As IEnumerable(Of String) =
{
"audiodg",
"csrss",
"Idle",
"services",
"smss",
"System"
}
Dim processes As IEnumerable(Of Process) =
System.Diagnostics.Process.GetProcesses
Dim pNames As IEnumerable(Of String) =
From p As Process In processes
Where Not blacklisted.Contains(p.ProcessName)
Order By p.ProcessName Ascending
Select String.Format("{0}.exe", p.ProcessName).ToLower
Distinct
Dim pPaths As IEnumerable(Of String) =
From p As Process In processes
Where Not blacklisted.Contains(p.ProcessName)
Order By p.MainModule.FileName Ascending
Select p.MainModule.FileName.ToLower
Distinct
ListBox1.Items.AddRange(pPaths.ToArray)
Y, si estás desarrollando la app para arquitectura x86, para comunicarte con los procesos x64 puedes realizar una consulta a
WMI (
Windows Management Instrumentation):
➢
Win32_Process class (Windows) - MSDNPublic Shared Function GetProcesses() As ManagementObjectCollection
Using searcher As New ManagementObjectSearcher(queryString:="SELECT * FROM Win32_Process")
Return searcher.Get
End Using
End Function
Dim processes As ManagementObjectCollection =
GetProcesses()
Dim pNames As IEnumerable(Of String) =
From mo As ManagementObject In processes.Cast(Of ManagementObject)()
Order By DirectCast(mo.Properties("Name").Value, String) Ascending
Select DirectCast(mo.Properties("Name").Value, String).ToLower
Distinct
Dim pPaths As IEnumerable(Of String) =
From mo As ManagementObject In processes.Cast(Of ManagementObject)()
Where Not mo.Properties("ExecutablePath").Value Is Nothing
Order By DirectCast(mo.Properties("ExecutablePath").Value, String).ToLower Ascending
Select DirectCast(mo.Properties("ExecutablePath").Value, String).ToLower
Distinct
ListBox1.Items.AddRange(pPaths.ToArray)
Nota: Recuerda que la Class "
ManagementObjectCollection" es
Disposable.
También puedes utilizar las funciones de la API de Windows:
➢
Process Walking - MSDN➢
PSAPI Functions - MSDN(de esto no pongo un ejemplo ya que no tengo ...pero por Google debe haber; y elaborarlo me costaría el esfuerzo de escribir aproximadamente +1.000 lineas de P/Invoking)
Saludos!