Windows non produce i dump di arresto anomalo completi anche se il Registro di sistema è impostato correttamente

Il mio cliente sta riscontrando arresti anomali del software con un programma VB6 che ho scritto.

Avevo impostato il registro per produrre i crash dump completi e ho visto che funzionava correttamente con altri programmi che si bloccavano sul loro sistema, ma per qualche ragione, per il mio programma, crea i semplici dump di arresto anomalo in una directory completamente diversa.

Il mio programma è a 32 bit in esecuzione su un computer x64. Ho configurato il registro come mostrato nell’immagine, sia per SOFTWARE \ Microsoft che SOFTWARE \ Wow6432Node \ Microsoft.

Ancora non funziona.

Qualcuno sa come posso essere sicuro che i dump di crash completi vengano prodotti ogni volta che il programma va in crash?

    Cambiamenti di registro che ho fatto

    Permessi della cartella in cui scrivere

    Esaminando i permessi della cartella C:\ProgramData\Microsoft\Windows\WER ha

    • Leggi ed esegui
    • Elenca il contenuto della cartella
    • Leggere

    Creazione di una sottocartella LocalDumps erediterà le autorizzazioni.

    Quindi dovresti modificare i permessi di quella cartella o usare una cartella diversa con permessi di scrittura.

    Permessi della chiave di registro

    Windows potrebbe non essere in grado di leggere le impostazioni del Registro di sistema se le autorizzazioni non lo consentono. Ad esempio, le seguenti (davvero stupide) autorizzazioni prevengono anche un LocalDump:

    Autorizzazioni LocalDumps

    32 vs 64 bit

    Segnalazione errori di Windows viene eseguita da Windows e utilizza solo la chiave di registro con il controllo del sistema operativo. Hai detto che hai impostato entrambi. Se è vero, va bene. Se si imposta solo la chiave del Registro di sistema a 32 bit, non funzionerà.

    AeDebug

    Se hai un’impostazione per AeDebug HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug , questi vengono eseguiti prima del WER.

    Si noti che questa voce può esistere in 32 bit (WOW6432Node) e 64 bit.

    Di solito ciò dovrebbe comportare l’avvio di un debugger, ma chissà … potrebbe non fare nulla e uscire.

    LocalDumps è disabilitato

    Assicurarsi che non vi sia alcun DWORD Disabled con valore 1 in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

    Utilizzare REG_SZ anziché REG_EXPAND_SZ

    Ho visto persone che usano REG_SZ per DumpFolder in combinazione con %APPDATA% . Solo REG_EXPAND_SZ espande le variabili di ambiente.

    Prova prima di usarlo

    Per verificare se le tue impostazioni funzionano, puoi testare con un piccolo programma C ++.

     #include "stdafx.h" #include  int _tmain(int /*argc*/, _TCHAR* /*argv*/[]) { throw std::exception(); }