Il processo VBscript scompare


1

Qualche giorno fa ho notato che uno dei miei VBscripts si è fermato da solo, pochi secondi dopo l'avvio. Risulta che il processo wscript.exe viene eliminato dopo circa 5 secondi dalla sua creazione. Questo è abbastanza esatto. Ho scritto uno script di test con:

wscript.sleep 4800
wscript.echo "ciao"

Vedo il processo wscript.exe in TaskManager, vedrò la finestra di messaggio per una frazione di secondo dopo aver atteso 4.8 secondi. e poi questo (e il processo) scompare. Cambiando l'ora in 5200 e non vedrò mai una finestra di messaggio.
E qui la cosa strana: impostando il tempo a 5000, il processo verrà anche ucciso la maggior parte del tempo, ma ho visto 3 volte che non è stato ucciso. Il processo non sarebbe scomparso finché non avessi fatto clic su OK.

  • Stesso comportamento per wscript.exe e cscript.exe

  • Fare doppio clic su vbs da Explorer o eseguire vbs da un cmd.exe avviato dall'amministratore non fa alcuna differenza

  • Sto usando Security Essentials (e ho a lungo)

  • HijackThis mostra questa linea (che non è sempre stata lì): O4 - HKLM .. \ RunOnce: [Malwarebytes Anti-Malware] C: \ Programmi (x86) \ Malwarebytes 'Anti-Malware \ mbamgui.exe / install / silent (mbamgui.exe non è un processo in esecuzione però)

  • Quando viene eseguito con l'output di cscript è:

d: \ temp & gt; cscript tst.vbs
Microsoft (R) Windows Script Host versione 5.8
Copyright (C) Microsoft Corporation. Tutti i diritti riservati.

Ciao
Il tempo di esecuzione dello script è stato superato sullo script "d: \ temp \ tst.vbs".
L'esecuzione dello script è stata interrotta.

Il codice qui sotto mostra anche un risultato solo se il tempo di calcolo viene mantenuto al di sotto di 5 secondi:

t1 = Timer
Per i = 1 a 25000000
x = Rnd () * Rnd ()
Il prossimo
MsgBox timer-t1

Sulla mia macchina, con 25000000 vedo il risultato una frazione di secondo, con 30000000 il risultato non viene mai mostrato.

C'è un modo per individuare quale processo è responsabile dell'abbattimento del mio processo VBscript?

Risposte:


1

L'impostazione predefinita per il timeout è none, quindi forse hai configurato accidentalmente a timeout per il motore di script .

Se questo non è il problema, allora puoi provare a monitorare il processo di scripting (sia con WScript che con CScript) Sysinternals ProcMon .


c'è un'opzione a riga di comando //S che "imposterà le attuali opzioni della riga di comando per l'utente". Non ho provato questo, ma implica che se eseguito contemporaneamente //T (timeout), memorizzerà l'opzione T come predefinita
horatio

Sì, era così. Ho appena testato // T con // S e viene memorizzato in Timeout REG-DWORD in [HKEY_CURRENT_USER \ Software \ Microsoft \ Windows Script Host \ Settings]. Ho davvero giocato con queste // opzioni non molto tempo fa ....
mgr326639

Il mistero della cosa a cui ho assistito tre volte rimane però ....
mgr326639
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.