
¿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ástring
en 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.