Sto utilizzando la chiamata API Segnalazione errori Windows RegisterApplicationRestart per registrare un'applicazione che deve essere riavviata automaticamente da WER, quando l'app si arresta in modo anomalo o il PC viene riavviato.Riavviare un programma arrestato con RegisterApplicationRestart senza prompt utente
Tuttavia, quando l'app si arresta in modo anomalo, viene visualizzata la finestra di dialogo WER predefinita ("xyz ha smesso di rispondere"/"Desidera inviare ulteriori informazioni sul problema") e solo dopo aver chiuso questa finestra di dialogo il programma si riavvia.
C'è un modo per sopprimere questa finestra di dialogo?
Se chiamo SetErrorMode(SEM_NOGPFAULTERRORBOX), la finestra di dialogo è soppressa, come previsto, ma il riavvio stesso non funziona più.
Se suppongo globalmente la finestra di dialogo modificando la chiave di registro HKEY_CURRENT_USER\Software\ Microsoft\Windows\Windows Error Reporting\DontShowUI
, ottengo lo stesso risultato: la finestra di dialogo è soppressa, ma l'app non si riavvia neanche.
Sono a conoscenza di soluzioni alternative come un secondo programma watchdog, ma mi piacerebbe davvero risolverlo nel modo più semplice possibile con gli strumenti dell'API di segnalazione errori di Windows.
Il documento ufficiale per RegisterApplicationRestart indica chiaramente: "l'applicazione non viene riavviata automaticamente senza il consenso dell'utente" –