Prozessnamen aus eigener Beschreibung abrufen?

1557
Qassam Mahmoud

Wie kann ich den Prozessnamen anhand der Prozessbeschreibung aus dem Arbeitsspeicher des Computers abrufen?

Beispiel:

Mein Programmname ist "dev.exe" im Speicher und seine Beschreibung ist "ein Werkzeug, um PHP-Entwicklern zu helfen".

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

Können wir dies als autoit, cmd oder wmic machen?

2
Nur eine Idee. Im Prinzip können Sie sich eine Liste aller Prozesse anzeigen lassen, dann den Namen und den Pfad der ausführbaren Datei. Wenn die Größe übereinstimmt, können Sie etwas wie [md5sum] (https://en.wikipedia.org/wiki/Md5sum) ausführen und prüfen, ob es sich um dieselben Dateien handelt, oder Sie können, falls vorhanden, den internen Namen und die Version extrahieren. (Einige Programme wurden in ihrem Namen kompiliert ...) [So listen Sie Prozesse auf] (http://superuser.com/questions/914782/how-do-you-list-all-processes-on-the-command-line -in-Windows) kann Ihnen mehr als einen Hinweis geben ... Hastur vor 7 Jahren 0
bitte hilfe ?? Qassam Mahmoud vor 7 Jahren 0
@ QassamMahmoud Ich habe in meiner Antwort zwei PowerShell-Lösungen vorgestellt. DavidPostill vor 7 Jahren 0

1 Antwort auf die Frage

2
DavidPostill

Wie finde ich einen laufenden Prozessnamen mit dem Eigenschaftswert "Dateibeschreibung"?

Verbesserte Lösung (dank @BenN folgende 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 eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung innerhalb des Eigenschaftswerts "Dateibeschreibung" durchzuführen.
  • Das Übergeben von "notepad" stimmt mit "notepad.exe" und "notepad ++. Exe" überein, 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> 

Originallö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 Groß- und Kleinschreibung zu suchen.
  • Wenn Sie bestanden stringhaben, sucht es mit *string*und passt stringirgendwo innerhalb der Eigenschaft "Dateibeschreibung"
  • Das Übergeben von "notepad" stimmt mit "notepad.exe" und "notepad ++. Exe" überein, wenn beide ausgeführt werden.
  • Das Skript gibt die "Dateibeschreibung", "Prozesspfad" und "Prozessname" 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 zwei Prozesse im Speicher, wenn die portable Version ausgeführt wird.