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?
//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