получить имя процесса из его собственного описания?

получить имя процесса из его собственного описания?

Как получить имя процесса из памяти компьютера, используя цикл в зависимости от описания процесса?

Пример:

Имя моей программы в памяти — «dev.exe», а ее описание — «инструмент для помощи разработчикам PHP».

Есть ли способ узнать имя моего процесса, используя описание процесса, даже если пользователь изменил имя?

Можно ли сделать это с помощью autoit, cmd или wmic?

решение1

Я нашел эту ссылку, пытаясь решить ту же проблему. Основываясь на существующем ответе, простая строка, которую можно добавить в существующий скрипт:

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

Пример вывода:

    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

решение2

Как найти имя запущенного процесса, зная значение его свойства «Описание файла»?

Улучшенное решение(спасибо @BenN за обсуждение в чате):

Используйте следующий скрипт PowerShell (Get-ProcessName.ps1).

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

Примечания:

  • Первый параметр, переданный скрипту, используется для выполнения поиска без учета регистра в значении свойства «Описание файла».
  • При передаче «notepad» будут соответствовать как «notepad.exe», так и «notepad++.exe», если они оба запущены.

Пример вывода:

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>

Оригинальное решение:

Используйте следующий скрипт 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)'"
      }
    }
  }

Примечания:

  • Первый параметр, переданный скрипту, используется для выполнения поиска по шаблону без учета регистра в значении свойства «Описание файла».
  • Если вы передадите, stringбудет выполнен поиск с использованием *string*и будет найдено соответствие stringв любом месте в пределах свойства «Описание файла».
  • При передаче «notepad» будут соответствовать как «notepad.exe», так и «notepad++.exe», если они оба запущены.
  • Скрипт выводит «Описание файла», «Путь процесса» и «Имя процесса».

Пример вывода:

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>

Примечания:

  • При запуске портативной версии «notepad++.exe» имеет два процесса в памяти.

Связанный контент