io chiamo un programma a riga di comando dal mio script Perl. Quando questi programmi si bloccano, viene richiesto con una messagebox che mi chiede se voglio avvisare Microsoft. Poiché questo è un sistema automatico sarebbe auspicabile se potessi sopprimere quel messaggio e continuare con altre cose nel mio script. È possibile?Come si eliminano le finestre di dialogo di arresto "notificare Microsoft" quando chiamo un comando da Perl?
risposta
Probabilmente potrebbe utilizzare il WerAddExcludedApplication
function per fermare WER da calci quando il programma si blocca. È necessario annullare nuovamente l'esclusione di cappello con WerRemoveExcludedApplication
.
Il problema non suona come il suo un problema Perl, suona come un problema con i comandi di sistema. Che intendi con "quando questi programmi si bloccano". I tuoi programmi di sistema?
Dipende da ciò che sta causando l'incidente. Questo è l'errore "Dr. Watson"/funzione WinQUAL e in realtà non dovrebbe accadere per puro codice Perl, se lo fa, significa che l'interprete Perl si blocca e si ha un bug Perl o si sta utilizzando un'estensione nativa che si blocca, assicurati di avere l'ultima versione stabile di Perl o di qualsiasi estensione nativa. Restringilo a ciò che si sta schiantando.
È inoltre possibile disattivare la funzione di Segnalazione errori di Windows del tutto, dal pannello di controllo di Windows.
Penso che Pete significhi che il programma lanciato da 'system' sta andando in crash, e la chiamata' system' non ritorna finché la finestra di dialogo non è stata chiusa. 'eval' non aiuterà in questo. Non sarebbe d'aiuto nemmeno con un interprete Perl in crash. – cjm
Grazie per la correzione. Scusa, non ho davvero pensato molto bene alla mia risposta e ho fatto un'assunzione muta senza leggere i documenti. – codenheim
Un po 'più di informazioni su come disattivare la segnalazione degli errori
attivazione di questo criterio di gruppo in errori di Windows Segnalazione (WER) dovrebbe fare il trucco (test in questo momento perché ho lo stesso problema): 0.123.
non verrà generato alcun popup nel caso in cui si esegua un programma e si interrompa la chiamata all'interno del proprio script perl all'interno della chiamata system()
. Ma sappi che la politica sarà sistematica; nessun problema se il tuo sistema viene utilizzato per lavori batch.
whoa! Ho appena realizzato che la tua domanda è di 6 anni .. Spero che tu abbia risolto il problema ora :) –
Nota a margine: sono abbastanza sicuro che ci deve essere un modo migliore. Dopo tutto, cosa hai intenzione di fare se questo fa parte di un lavoro in background automatizzato, o hai solo l'accesso non grafico alla shell da remoto? Sono abbastanza sicuro che ci sia una soluzione * corretta * al problema; questo è solo un trucco su di esso. – Joey