641 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von hallogen Experte (1.6k Punkte)
hallol
ich hab folgendes VBS:
[quote]set wmi = GetObject("winmgmts:")
set [xurl=https://supportnet.de/faqsthread/2350237|SIW - System Information for Windows]system[/url] = wmi.instancesOf("win32_process")
for each process in system
if lcase(process.name)="firefox.exe" then
process.Terminate (0)
end if
next
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run ("""" & "C:\Program Files\Mozilla Firefox\firefox.exe" & """")[/quote]
und erhalte meistens ,aber nicht immer folgende Fehlermeldung:
[quote]
Skript:    C:\Users\xxx\Desktop\test.vbs
Zeile:    5
Zeichen:1
Fehler:    Nicht gefunden
Code:    80041002
Quelle: SWbemObjectEx[/quote]
Nun erklärt dem Laien bitte was ist an dem Zeichen 1 in Zeile 5 so Schlimmes dran ist,daß das Script nicht funktioniert.
Danke

2 Antworten

0 Punkte
Beantwortet von
Kenne mich zwar mit VBS nicht aus, aber meistens liegt ein Syntax fehler in der Zeile darüber vor.

Eventuell "==".  "=" ist normalerweise eine zuweisung und kein Vergleich.
Klammasezung?
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)

Ich vermute, dass schon bei einem einzigen "Terminate" mehrere (oder alle) "firefox" prozesse zusammen beendet werden. dadurch wäre der Enumerator "system" nicht mehr aktuell, und auf den nächste "firefox" Eintrag in dem (nun alten) Enumerator kann nicht mehr zugegriffen werden.

Man müsste demnach nach jedem "Terminate" die Schleife beenden, den ganzen Enumerator nochmal neu abrufen und die Schleife neu starten.

Übrigens kannst Du die Abfrage auch noch gezielter formulieren, z.B.:

set system = wmi.ExecQuery( "Select * from win32_process where Name='firefox.exe'" )

Siehe auch ExecQuery.

...