¿Obtener el nombre del proceso a partir de su propia descripción?

¿Obtener el nombre del proceso a partir de su propia descripción?

¿Cómo puedo obtener el nombre del proceso de la memoria de la computadora usando un bucle según la descripción del proceso?

Ejemplo:

El nombre de mi programa es "dev.exe" en la memoria y su descripción es "una herramienta para ayudar a los desarrolladores de php".

¿Hay alguna forma de encontrar el nombre de mi proceso utilizando la descripción del proceso incluso si el usuario cambia el nombre?

¿Podemos hacer esto con autoit, cmd o wmic?

Respuesta1

Encontré este enlace intentando resolver el mismo problema. A partir de la respuesta existente, una línea simple que se puede agregar a un script existente:

 Get-Process | where {$_.Description -like '*note*'} | select Path, Description, ProcessName

Salida de ejemplo:

    Path                                                         Description          ProcessName
----                                                         -----------          -----------
C:\Windows\system32\notepad.exe                              Notepad              notepad
C:\Program Files\Microsoft Office\root\Office16\ONENOTE.EXE  Microsoft OneNote    ONENOTE
C:\Program Files\Microsoft Office\root\Office16\ONENOTEM.EXE Send to OneNote Tool ONENOTEM

Respuesta2

¿Cómo encuentro un nombre de proceso en ejecución dado el valor de la propiedad "Descripción del archivo"?

Solución mejorada(gracias a @BenN por seguir la discusión en el chat):

Utilice el siguiente script de PowerShell (Get-ProcessName.ps1).

$_match=$Args[0].ToLowerInvariant()
Get-Process | where {$_.Description -ne $null -and $_.Description.ToLowerInvariant().Contains($_match)} | select Path, Description, ProcessName

Notas:

  • El primer parámetro pasado al script se utiliza para realizar una búsqueda que no distingue entre mayúsculas y minúsculas dentro del valor de la propiedad "Descripción del archivo".
  • Pasar "notepad" coincidirá con "notepad.exe" y "notepad++.exe" si ambos se están ejecutando.

Salida de ejemplo:

PS F:\test> .\Get-ProcessName notepad

Path                                                               Description                                                        ProcessName
----                                                               -----------                                                        -----------
C:\Windows\system32\notepad.exe                                    Notepad                                                            notepad
E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe             Notepad++ : a free (GNU) source code editor                        notepad++
E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe             Notepad++ : a free (GNU) source code editor                        notepad++


PS F:\test>

Solución original:

Utilice el siguiente script de Powershell (Get-ProcessName.ps1).

$_name=$Args[0]
$_match="*"+$Args[0]+"*"
Get-Process | ForEach {
  if ($_.Path) {
    $_filedescription=(Get-Item $_.Path).VersionInfo.FileDescription 
    if ($_filedescription -like $_match) {
      Write-Output "File Description: '$_filedescription', Process Path: '$($_.Path)', Process Name: '$($_.ProcessName)'"
      }
    }
  }

Notas:

  • El primer parámetro pasado al script se utiliza para realizar una búsqueda "comodín" que no distingue entre mayúsculas y minúsculas dentro del valor de la propiedad "Descripción del archivo".
  • Si lo aprueba string, buscará usando *string*y coincidirá stringen cualquier lugar dentro de la propiedad "Descripción del archivo".
  • Pasar "notepad" coincidirá con "notepad.exe" y "notepad++.exe" si ambos se están ejecutando.
  • El script genera la "Descripción del archivo", la "Ruta del proceso" y el "Nombre del proceso".

Salida de ejemplo:

PS F:\test> .\Get-ProcessName notepad
File Description: 'Notepad', Process Path: 'C:\Windows\system32\notepad.exe', Process Name: 'notepad'
File Description: 'Notepad++ : a free (GNU) source code editor', Process Path: 'E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe', Process Name: 'notepad++'
File Description: 'Notepad++ : a free (GNU) source code editor', Process Path: 'E:\LiberKey\Apps\Notepad++\App\Notepad++\notepad++.exe', Process Name: 'notepad++'
PS F:\test>

Notas:

  • "notepad++.exe" tiene dos procesos en la memoria cuando se ejecuta la versión portátil.

información relacionada