Finde meine eigene Prozess-ID in VBScript

7

Ich verwende das folgende Code-Snippet, um zu ermitteln, welche Prozess-ID mein vbscript ausführt:

%Vor%

Auf meinem Windows 7 (32-Bit) Rechner funktioniert dies etwa 90% der Zeit und iMyPID enthält die Prozess ID des aktuell laufenden Skripts. 10% der Zeit Handle_Error wird jedoch mit der Fehlermeldung " SWbemServicesEX: Nicht gefunden " aufgerufen.

Kürzlich hat jemand anderes, der Windows 7 (64-Bit) ausführt, gemeldet, dass Handle_Error immer mit der Fehlermeldung " Nicht genügend Speicher " aufgerufen wird. Dies scheint eine wahnsinnige Fehlermeldung zu sein, nur um Ihre eigene Prozess-ID herauszufinden!

Kann jemand einen besseren Weg empfehlen, dies zu tun?

    
Richard 28.11.2011, 12:49
quelle

8 Antworten

12

mshta beendet sich sofort. Vielleicht ist es zu spät, um die Elternprozess-ID zu erhalten, indem Sie den WMI-Dienst verwenden.
Also würde ich etwas so verwenden, um gleichzeitige Skriptprozesse zu eliminieren.

  1. Erzeugt zufällige Dinge.
  2. Ermitteln Sie eine Anwendung, die auf jedem System installiert werden kann und niemals selbst beendet wird (z. B. Eingabeaufforderung mit dem Parameter / k).
  3. Starten Sie die Anwendung im versteckten Modus mit generiertem Zufallsargument ( WshShell.Run ).
  4. Warten Sie einige Millisekunden
  5. Abfrage der laufenden Prozesse mithilfe des Befehlszeilenargumentwerts.
  6. Ruft die ParentProcessId-Eigenschaft ab.
%Vor%     
Kul-Tigin 08.12.2011, 21:52
quelle
6

Hier ist ein noch besseres Code-Snippet:

%Vor%     
Asok Smith 15.03.2013 15:13
quelle
4

Ich mag Kul-Tigin's Idee (+1), und Asok Smiths Idee (basierend auf .Exec ) verdient Respekt (+1), und es wäre noch besser gewesen, wenn .Exec einen versteckten Prozess ausgeführt hätte. Um meine Neugier zu befriedigen, spielte ich auch damit und das tat ich.

%Vor%

28 mal schneller (!), nicht schlecht:)

    
Panayot Karabakalov 16.03.2013 19:27
quelle
1

Ich habe gerade diesen Thread gefunden, der mein Problem teilweise gelöst hat. Danke euch allen.

"Der Code kann nicht feststellen, welche Prozess-ID zu welchem ​​Skript gehört": true, aber da dies die erste Aufgabe ist, die Ihr Skript erreichen muss, können Sie die PID mit der kürzesten Lebensdauer beibehalten.

%Vor%

Abgesehen davon, dass Sie Skripte schneller als jeder einzelne gestartet haben, können Sie die PID-Funktion aufrufen. Alles muss in Ordnung sein.

    
nobur 01.06.2012 13:24
quelle
1

Hier ist ein besseres, aber in JScript (Entschuldigung, Sie übersetzen es in VB ...)

%Vor%     
Toughy 03.11.2012 19:22
quelle
1

Um die eigene Prozess-ID eines VB-Skripts abzurufen, können Sie sich auf die Eigenschaft CreationDate des Process-Objekts verlassen.

Im Moment, in dem ein VB-Skript gestartet wird, hat der Prozess, der das Skript ausführt, das neueste CreationDate aller Prozesse, die dasselbe Skript ausführen.

Tatsächlich wird es das höchste CreationDate aller laufenden Prozesse haben.

Um also die PID zu erhalten, müssen Sie zuerst nach dem Prozess mit dem höchsten CreationDate suchen.

%Vor%     
user6163900 05.04.2016 23:17
quelle
0

Dies ist nicht meine Antwort, ich fand das in einigen Google Groups Diskussionsforen ... Sehen Sie, ob es Ihnen hilft.

%Vor%

Original-Diskussions-Thread im Google Groups-Forum

    
Buddha 06.12.2011 10:12
quelle
0

Ruft die aktuelle Prozess-ID ab

%Vor%     
Shubham Verma 12.11.2017 10:17
quelle

Tags und Links