Prozessnamen aus der eigenen Beschreibung abrufen?

Prozessnamen aus der eigenen Beschreibung abrufen?

Wie kann ich den Prozessnamen aus dem Computerspeicher abrufen, indem ich eine von der Prozessbeschreibung abhängige Schleife verwende?

Beispiel:

Mein Programmname im Speicher ist „dev.exe“ und seine Beschreibung ist „ein Tool zur Unterstützung von PHP-Entwicklern“.

Gibt es eine Möglichkeit, meinen Prozessnamen anhand der Prozessbeschreibung zu finden, selbst wenn der Benutzer den Namen ändert?

Können wir dies mit Autoit, cmd oder wmic machen?

Antwort1

Ich habe diesen Link gefunden, der versucht, das gleiche Problem zu lösen. Aufbauend auf der vorhandenen Antwort eine einfache Zeile, die zu einem vorhandenen Skript hinzugefügt werden kann:

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

Beispielausgabe:

    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

Antwort2

Wie finde ich den Namen eines laufenden Prozesses anhand seines Eigenschaftswerts „Dateibeschreibung“?

Verbesserte Lösung(danke an @BenN nach der Diskussion im Chat):

Verwenden Sie das folgende PowerShell-Skript (Get-ProcessName.ps1).

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

Anmerkungen:

  • Der erste an das Skript übergebene Parameter wird verwendet, um innerhalb des Eigenschaftswerts „Dateibeschreibung“ eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen.
  • Die Übergabe von „notepad“ trifft sowohl auf „notepad.exe“ als auch auf „notepad++.exe“ zu, wenn beide ausgeführt werden.

Beispielausgabe:

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>

Ursprüngliche Lösung:

Verwenden Sie das folgende Powershell-Skript (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)'"
      }
    }
  }

Anmerkungen:

  • Der erste an das Skript übergebene Parameter wird verwendet, um innerhalb des Eigenschaftswerts „Dateibeschreibung“ eine Suche mit Platzhaltern und ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen.
  • Wenn Sie es übergeben, wird mit der Eigenschaft „Dateibeschreibung“ stringgesucht *string*und eine Übereinstimmung gefunden.string
  • Die Übergabe von „notepad“ trifft sowohl auf „notepad.exe“ als auch auf „notepad++.exe“ zu, wenn beide ausgeführt werden.
  • Das Skript gibt die „Dateibeschreibung“, den „Prozesspfad“ und den „Prozessnamen“ aus.

Beispielausgabe:

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>

Anmerkungen:

  • „notepad++.exe“ hat beim Ausführen der portablen Version zwei Prozesse im Speicher.

verwandte Informationen