Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 오류 보고(WER) 비활성화 및 ReportQueue 폴더 정리 완벽 가이드

Windows 오류 보고 서비스(Windows Error Reporting, WER)는 시스템 및 서드파티 애플리케이션의 오류에 대한 디버그 정보를 수집하고, 이를 Microsoft 서버로 전송하는 기능입니다. Microsoft는 이 정보를 분석한 후 해결책이 존재하면 'Windows 오류 보고 응답'을 통해 사용자에게 전달합니다. 하지만 실제로 이 기능을 활용하는 사용자는 많지 않으며, 최신 Windows 버전에서도 Microsoft는 기본적으로 WER 서비스를 항상 활성화 상태로 유지합니다.

대부분의 사용자가 WER의 존재를 인식하는 시점은 C:\ProgramData\Microsoft\Windows\WER\ReportQueue\ 폴더가 시스템 드라이브에서 수십 GB에 달하는 용량을 차지할 때입니다. 해당 폴더에는 기본적으로 NTFS 압축이 적용되어 있음에도 불구하고 말입니다.

Windows 오류 보고 서비스란?

Windows 오류 보고는 애플리케이션 오류가 발생했을 때 대화 상자를 표시하며, Microsoft에 오류 보고서를 제출할지 묻는 기능입니다. Windows에서 "YourAppName.exe이(가) 작동을 멈췄습니다. 문제에 대한 추가 정보를 수집하고 있습니다"라는 메시지를 본 적이 있다면, 바로 Windows 오류 보고 서비스가 WerFault.exe 도구를 실행해 디버그 데이터(메모리 덤프 포함 가능)를 수집하는 중인 것입니다.

사용자 관련 데이터는 다음 사용자 프로필 경로에 저장됩니다:

%USERPROFILE%\AppData\Local\Microsoft\Windows\WER\

시스템 관련 데이터는 ProgramData 디렉터리에 저장됩니다:

%ALLUSERSPROFILE%\Microsoft\Windows\WER\

Windows 오류 보고는 별도의 Windows 서비스로 운영되며, PowerShell 명령으로 서비스 상태를 확인할 수 있습니다:

Get-Service WerSvc

WER\ReportQueue\ 디렉터리 안에는 다음과 같은 형식의 이름을 가진 폴더들이 다수 존재합니다:

  • Critical_6.3.9600.11285_{ID}_00000000_cab_3212dd23
  • Critical_powershell.exe_{ID}_cab_332a45c5
  • Critical_sqlservr.exe__{ID}_cab_b3a200181
  • NonCritical_7.9.9600.11285__{ID}_0bfab19a
  • AppCrash_cmd.exe_{ID}_dba332ad_12eb5425

폴더 이름에는 이벤트의 심각도(Critical/NonCritical)와 충돌이 발생한 EXE 파일명이 포함됩니다. 각 폴더에는 오류 설명과 추가 정보를 담은 Report.wer 파일이 들어 있습니다.

Windows에서 WER\ReportQueue 폴더를 정리하는 방법

일반적으로 각 폴더의 크기는 크지 않지만, 문제가 발생한 프로세스에 대해 메모리 덤프가 생성되는 경우 용량이 크게 늘어날 수 있습니다. 아래 예시에서 memory.hdmp 파일의 크기는 약 610MB에 달합니다. 이런 덤프 파일 몇 개만 쌓여도 시스템 드라이브에서 수 GB를 차지하게 됩니다.

내장 도구를 사용해 이러한 오류 보고서와 로그를 모두 삭제하려면, 제어판을 열고 시스템 및 보안 → 보안 및 유지 관리 → 유지 관리 → 안정성 기록 보기 → 모든 문제 보고서 보기로 이동한 뒤 모든 문제 보고서 지우기를 클릭합니다.

디스크 공간을 빠르게 확보하려면 아래 폴더에서 WER 서비스가 생성한 디버그 및 로그 파일을 직접 삭제할 수도 있습니다:

  • C:\ProgramData\Microsoft\Windows\WER\ReportArchive\
  • C:\ProgramData\Microsoft\Windows\WER\ReportQueue\

다음 PowerShell 명령을 사용하면 WER 디렉터리에서 30일 이상 지난 파일들을 일괄 삭제할 수 있습니다:

Get-ChildItem -Path 'C:\ProgramData\Microsoft\Windows\WER\ReportArchive' -Recurse | Where-Object CreationTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force -Recurse
Get-ChildItem -Path 'C:\ProgramData\Microsoft\Windows\WER\ReportQueue' -Recurse | Where-Object CreationTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force –Recurse

모든 사용자 프로필의 WER 디렉터리를 한 번에 정리하려면 아래 PowerShell 스크립트를 사용하세요:

$users = Get-ChildItem c:\users|where{$_.name -notmatch 'Public|default'}
foreach ($user in $users){
Get-ChildItem "C:\Users\$User\AppData\Local\Microsoft\Windows\WER\ " –Recurse -ErrorAction SilentlyContinue | Remove-Item –force –Recurse
}

Windows Server에서 Windows 오류 보고 비활성화하기

Windows Server 2019/2016/2012R2에서는 PowerShell로 WER 서비스 상태를 관리할 수 있습니다. Windows 오류 보고 서비스를 중지하려면 다음 명령을 실행합니다:

Get-Service WerSvc| stop-service –passthru -force
Set-Service WerSvc –startuptype manual –passthru

하지만 더 권장되는 방법이 있습니다. PowerShell 4.0부터는 전용 WindowsErrorReporting 모듈이 제공됩니다:

Get-Command -Module WindowsErrorReporting

다음 명령으로 Windows 오류 보고 서비스의 현재 상태를 확인할 수 있습니다:

Get-WindowsErrorReporting

WER를 비활성화하려면 다음 명령을 실행합니다:

Disable-WindowsErrorReporting

또한 Windows Server 2012 R2에서는 제어판(제어판 → 시스템 및 보안 → 관리 센터 → 유지 관리 → 설정)에서 참여하지 않겠습니다. 다시 묻지 마십시오 옵션을 선택해 Windows 오류 보고를 끌 수 있습니다.

Windows 10에서 오류 보고를 비활성화 또는 활성화하는 방법

Windows 10에서는 제어판을 통해 오류 보고를 직접 비활성화할 수 없습니다. 제어판 → 시스템 및 보안보안 및 유지 관리유지 관리에서 구성 요소 상태만 확인할 수 있으며, 문제 보고 항목이 활성화되어 있는 것을 볼 수 있습니다.

Windows 10에서 Windows 오류 보고를 비활성화하려면 레지스트리를 수정해야 합니다. 레지스트리 키 HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting 아래에 값이 1Disabled(DWORD 32비트) 값을 새로 생성하면 됩니다.

특정 사용자에 대해서만 오류 정보 수집을 비활성화하려면 다음 명령을 사용합니다:
reg add "HKCU\Software\Microsoft\Windows\Windows Error Reporting" /v "Disabled" /t REG_DWORD /d "1" /f

모든 사용자에 대해 WER을 비활성화하려면 다음 명령을 사용합니다:
reg add "HKLM\Software\Microsoft\Windows\Windows Error Reporting" /v "Disabled" /t REG_DWORD /d "1" /f

설정 후 제어판에서 문제 보고 항목을 다시 확인하면 꺼짐(Off) 상태로 변경된 것을 볼 수 있습니다.

이 레지스트리 설정은 GPO(그룹 정책)를 통해 도메인 내 컴퓨터들에 일괄 배포할 수도 있습니다.

GPO를 통해 자동 Windows 오류 보고를 비활성화하는 방법

그룹 정책을 통해서도 Windows 오류 보고 서비스의 로깅을 비활성화할 수 있습니다. 로컬 그룹 정책 편집기(gpedit.msc) 또는 도메인 GPO 편집기(gpmc.msc)를 열고 다음 섹션으로 이동합니다: 컴퓨터 구성 → 관리 템플릿 → Windows 구성 요소 → Windows 오류 보고. 여기서 Windows 오류 보고 사용 안 함(Disable Windows Error Reporting) 정책을 찾아 사용(Enabled)으로 설정합니다. 이렇게 하면 Windows의 데이터 수집 및 오류 보고 기능이 비활성화됩니다.

사용자 구성(User Configuration) 섹션에도 동일한 정책이 존재합니다.

GPO 설정을 업데이트하면 되며, 재부팅은 필요하지 않습니다.

결과적으로 Windows는 더 이상 애플리케이션 및 시스템 오류 메시지를 생성하지 않으며, Microsoft로 오류 보고서를 전송하지 않게 됩니다.