Den Pfad zum Ausführen von * .exe abrufen

6

Ich entwickle gerade ein angepasstes CafeSuite-System für mein Internetcafé. Und ich benutze Java und JNI (Java Native Interface), um durch die Windows Registry zu kommen. Aber ich habe dieses Modul, das ich nicht bekommen oder sehen kann, ob es möglich ist, unter Windows XP zu arbeiten.

Wenn ich auf der Kommandozeile befahl, tasklistoder tlistes würde mir alles zurückgeben, was *.exeim System läuft . Aber mit all den Parametern, die der Zeile hinzugefügt werden könnten, kann ich keinen Parameter sehen, der das Verzeichnis pathzurückgibt oder bei dem eine * .exe ausgeführt wurde.

Leider verwende ich kein Windows Server-Betriebssystem und bin nicht auf eine Firewall UACoder eine Benutzerkontensteuerung des Betriebssystems angewiesen .

Ist es mit den gegebenen Mitteln möglich, ein solches Konzept zu verfolgen?

Kaido Shugo
quelle
Möchten Sie nur wissen, wo ein Prozess gestartet wurde, oder müssen Sie dies in Ihrer App ermitteln? Muss es eine Kommandozeile sein?
Paul
Alles ja. Ich muss die Pathfile jedes von Prozessrückkehr durch tasklistoder kennen tlist. Außerdem muss es sich in der Befehlszeile befinden, damit ich die Ergebnisse in dem Programm anzeigen kann, an dem ich arbeite.
Kaido Shugo
Vielleicht können Sie stattdessen WMI-Aufrufe verwenden. Das Ausführen von "wmic process list" in der Eingabeaufforderung listet alle ausgeführten Prozesse mit dem vollständigen Pfad auf. Mit etwas Batch-Fu können Sie den Pfad einer laufenden Exe technisch extrahieren, falls vorhanden.
Mart
@Mart, können Sie hier Einzelheiten zur Verwendung wmic process listals Antwort angeben? Vielen Dank.
Kaido Shugo
Ich könnte das tun, aber das würde einige Zeit in Anspruch nehmen, um mich bei microsoft.com umzuschauen und richtig zu recherchieren. Wenn Sie versuchen, diesen Befehl auszuführen und in eine Textdatei umzuleiten, werden verschiedene Eigenschaften angezeigt. Es gibt auch einige Formatspezifizierer und Schalter, mit denen Sie diese Informationen in eine CSV- oder XML-Datei ausgeben und später analysieren können. Fügen Sie /?jeden wmic-Befehl hinzu, um Hilfe zu erhalten.
Mart

Antworten:

7

Ab XP können Sie das Tool "Systeminformationen" verwenden, das den Pfad anzeigt. Sie können dies über das Menü unter "Start" → "Alle Programme" → "Zubehör" → "Systemprogramme" oder über die Befehlszeile als msinfo32  (oder "Start" → "Ausführen ..." → msinfo32ENTER) ausführen .

Klicken Sie auf „Software Environment“ → „Running Tasks“, und der Pfad wird angezeigt.

http://www.raymond.cc/blog/determine-program-path-from-task-manager-for-each-program-in-windows-xp-windows-server-2003/

Bildbeschreibung hier eingeben

GlennG
quelle
2

Wenn Sie mit Windows Powershell den Pfad für "firefox.exe" ermitteln möchten, können Sie Folgendes tun:

(Get-WmiObject -class Win32_Process -Filter 'Name="firefox.exe"').path.SubString(0, (Get-WmiObject -class Win32_Process -Filter 'Name="firefox.exe"').path.LastIndexOf('\'))

Dies würde zurückkehren:

C:\Program Files (x86)\Mozilla Firefox

Ersetzen Sie "firefox.exe" durch die gewünschte ausführbare Datei.

Mart
quelle
Werde ich aufgefordert, wmicbevor ich den obigen Befehl eingebe?
Kaido Shugo
Nicht benötigt. Sie müssen diese jedoch mit Windows Powershell ausführen, nicht mit der Eingabeaufforderung. <code> Get-WmiObject </ code> ist ein Cmdlet in Powershell. Sie können es mit dem Schalter <code> -? </ Code> ausführen, um weitere Hilfeinformationen zu erhalten.
Mart
0

Ich denke, das hat das Problem gelöst. Ich habe es hier über Google und es funktionierte über die Befehlszeile.

Kaido Shugo
quelle
Ihre WMIC-Antwort ist in Ordnung, aber GlenGs Antwort ist viel besser, da sie leicht zu merken und einheimisch ist. Ich schlage vor, Sie ändern Ihre akzeptierte Antwort auf seine.
Barlop
@barlop, dein Kommentar macht keinen Sinn - wmic ist seit XP in Windows integriert. Zusätzlich wird eine textbasierte Ausgabe bereitgestellt, die dann mit Tools wie findstr problemlos gefiltert werden kann.
Daniel
@ Daniel Ich stimme zu, mein Kommentar ist ziemlich seltsam. Ich weiß nicht, warum ich das geschrieben habe. Vielleicht habe ich nicht gesagt, dass WMIC nicht heimisch ist. Ich sagte, dass Glen's Antwort einheimisch und leicht zu merken ist. Und im strengen booleschen Sinne ist Nano's nicht, weil es nicht so leicht zu merken ist, wie Glenn's beide Kriterien erfüllt. Nano's erfüllt nicht beide Kriterien. WMIC ist so groß, dass es ein kleines Thema für sich ist. aber nichts falsch mit ihm .. über einen entsprechenden Hinweis, er sollte die Antwort in seiner Antwort enthalten hat , dann wäre es ein bisschen mehr leicht zu merken , aber immer noch nicht so einfach wie Glen zu erinnern ..
barlop