obtém o nome do processo a partir de sua própria descrição?

2

Como posso obter o nome do processo da memória do computador usando o loop, dependendo da descrição do processo?

Exemplo:

Meu nome do programa é "dev.exe" na memória e sua descrição é "uma ferramenta para ajudar os desenvolvedores do php "

Existe alguma maneira de encontrar o nome do meu processo usando a descrição do processo, mesmo que o usuário mude o nome?

Podemos fazer isso um autoit ou cmd ou wmic?

    
por Qassam Mahmoud 16.05.2016 / 12:37

1 resposta

2

Como faço para encontrar um nome de processo em execução dado o valor da propriedade "Descrição do arquivo"?

Solução aprimorada (graças a @BenN seguindo a discussão no chat):

Use o seguinte script do PowerShell (Get-ProcessName.ps1).

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

Notas:

  • O primeiro parâmetro passado para o script é usado para realizar uma pesquisa sem distinção entre maiúsculas e minúsculas no valor da propriedade "Descrição do arquivo".
  • A aprovação do "bloco de notas" corresponderá ao "notepad.exe" e ao "notepad ++. exe", se ambos estiverem em execução.

Exemplo de saída:

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>

Solução original :

Use o seguinte script 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:

  • O primeiro parâmetro passado para o script é usado para executar uma pesquisa insensível a maiúsculas e minúsculas "curinga" dentro do valor da propriedade "Descrição do arquivo".
  • Se você transmitir string , ele pesquisará usando *string* e corresponderá a string em qualquer lugar dentro da propriedade "Descrição do arquivo"
  • A aprovação do "bloco de notas" corresponderá ao "notepad.exe" e ao "notepad ++. exe", se ambos estiverem em execução.
  • O script gera a "Descrição do arquivo", "Caminho do processo" e "Nome do processo".

Exemplo de saída:

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" tem dois processos na memória ao executar a versão portátil.
por 29.05.2016 / 18:43