Перестал работать раздел реестра LocalDumps (отчеты об ошибках Windows)
Я настроил раздел реестра, HKLM\SOFTWARE\Microsoft\Windows\ Отчеты об ошибках Windows \LocalDumps, как описано в MSDN.
У меня есть тестовая программа - консольная программа, скомпилированная с Visual C++, которая пытается разыменовать нулевой указатель перед печатью сообщения и завершением работы. Тестовая программа использовалась для выхода и выгрузки файла ядра, но теперь она просто завершается. Я не получаю ядро.
Я использую Windows Server 2008 R2 Enterprise, SP1 на физическом оборудовании.
Я не знаю, что изменилось. Что могло бы измениться, чтобы теперь WER не сбрасывал ядра?
2 ответа
Убедитесь, что вы добавили ключ на узел LocalDumps, например "LocalDumps\MyApplication.exe". Затем обновите значения, которые описаны в этой ссылке. Во время сбоя WER ищет ключ с соответствующим именем приложения, чтобы решить, как обрабатывать дамп.
Следующее может пойти не так:
Разрешения папки для записи в
Смотря на разрешения папки C:\ProgramData\Microsoft\Windows\WER
она имеет
- Читать и выполнить
- Список содержимого папки
- Читать
Создание подпапки LocalDumps
унаследует разрешения.
Поэтому вам следует либо изменить разрешения для этой папки, либо использовать другую папку с разрешениями на запись.
Разрешения ключа реестра
Windows может не прочитать параметры реестра, если разрешения не позволяют этого. Например, следующие (действительно глупые) разрешения также предотвратят локальный дамп:
32 против 64 бит
Отчет об ошибках Windows выполняется Windows и использует только раздел реестра с разрядностью ОС. Вы сказали, что создали оба. Если это правда, это нормально. Если вы установите только 32-битный ключ реестра, он не будет работать.
AeDebug
Если у вас есть настройки для AeDebug HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
, те выполнены перед WER.
Обратите внимание, что эта запись может существовать в 32-битном (WOW6432Node) и 64-битном.
Обычно это должно привести к запуску отладчика, но кто знает... он может ничего не делать и просто завершиться.
LocalDumps отключен
Убедитесь, что нет DWORD Disabled
со значением 1
в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
Использование REG_SZ вместо REG_EXPAND_SZ
Я видел людей, использующих REG_SZ для DumpFolder
в комбинации с %APPDATA%
, Только REG_EXPAND_SZ будет расширять переменные среды.