- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 Windows 11 환경에서 프린트 스풀러(Print Spooler, spoolsv.exe)가 반복 종료되거나 자동으로 중지되는 문제를 현장 수준에서 신속하고 확실하게 복구하도록 절차·스크립트·점검표를 제공하는 것이다.
1. 증상 정의와 원인 분류
프린트 스풀러 서비스가 예기치 않게 중지되면 인쇄 대기열이 열리지 않거나 프린터가 오프라인으로 표시되며 인쇄가 실패한다. 주된 원인은 손상된 큐 파일(.SHD, .SPL), 불완전 드라이버, 포트 통신 오류(WSD, IPP), 서비스 종속성 실패(HTTP, Remote Procedure Call), 권한 문제, 스풀러 확장 모듈(필터, 모니터) 충돌, 보안 솔루션 차단 등이다.
| 증상 | 가능 원인 | 진단 포인트 |
|---|---|---|
| 대기열 열림과 동시에 닫힘 | 큐 파일 손상, 드라이버 충돌 | Spool 폴더 비우기 후 재발 여부 확인 |
| 몇 초 간격으로 서비스 자동 종료 | 확장 DLL 충돌, GPO 정책 충돌 | PrintIsolationHost 분리 인쇄 활성화 |
| 네트워크 프린터만 실패 | WSD/IPP 포트 통신 불안정 | TCP/IP 포트 고정 전환 |
| 특정 앱만 인쇄 불가 | 렌더링 경로 불일치 | XPS Test, PDF Test로 재현 확인 |
2. 즉시 복구 체크리스트(현장 5분 절차)
- 서비스 재시작을 수행한다.
services.msc (프린트 스풀러) 마우스 오른쪽 > 다시 시작 - Spool 폴더 비우기를 진행한다.
net stop spooler del /q /f %systemroot%\System32\spool\PRINTERS\*.* net start spooler - 드라이버 격리 모드를 적용한다.
printmanagement.msc 프린트 서버 > 서버 속성 > 고급 > "드라이버 격리 모드 활성" - 포트 고정으로 전환한다(WSD/IPP 사용 중이면 TCP/IP 수동).
제어판 > 장치 및 프린터 > 프린터 속성 > 포트 > 표준 TCP/IP 포트 추가 - SFC/DISM으로 시스템 무결성을 점검한다.
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
3. 기본 점검: 서비스·종속성·시작 유형
- 스풀러 서비스가 자동이며 실행 중인지 확인한다.
- 종속성 RPC, HTTP, DCOM, Remote Desktop Services UserMode Port Redirector가 오류 없는지 확인한다.
- 이벤트 뷰어에서 오류 범위를 좁힌다.
eventvwr.msc Windows 로그 > 시스템/응용 프로그램 출처: Service Control Manager, PrintService
4. 안전한 스풀러 정리 스크립트(관리자 PowerShell)
다음 스크립트는 스풀러 중지→대기열 정리→권한 복구→캐시 리셋→재시작 순으로 수행한다.
# 관리자 PowerShell Stop-Service -Name Spooler -Force $sp = "$env:SystemRoot\System32\spool\PRINTERS" if (Test-Path $sp){ Get-ChildItem $sp -File | Remove-Item -Force -ErrorAction SilentlyContinue }
권한 기본값 보정
$path = "$env:SystemRoot\System32\spool"
icacls $path /inheritance:e
icacls "$path\PRINTERS" /grant "*S-1-5-32-545":(OI)(CI)M /T
드라이버 캐시 정리(필요시)
Remove-Item "$env:SystemRoot\System32\spool\drivers\w32x86\3*" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:SystemRoot\System32\spool\drivers\x64\3*" -Force -ErrorAction SilentlyContinue
Start-Service -Name Spooler
Get-Service Spooler
5. 드라이버 충돌 진단과 정리
- 인쇄 서버 속성 > 드라이버에서 사용하지 않는 모델을 제거한다.
- 타사 유틸리티(Status Monitor, Scan Utility 등) 자동 로드를 비활성화한다.
- 클래식 타입 3(Classic) 드라이버를 우선 고려하고, 필요 시 타입 4로 전환하여 비교한다.
- 문제 프린터를 Generic / Text Only로 임시 바인딩해 스풀러 안정성을 검증한다.
printui.exe /s /t2 # 드라이버 관리 창 열기 printui.exe /dl /n "프린터이름" # 프린터 삭제 rundll32 printui.dll,PrintUIEntry /ia /m "모델명" /h "x64" /v "Type 3 - User Mode" /f "드라이버.inf" 6. Spool 폴더·권한·경로 검증
기본 경로는 %SystemRoot%\System32\spool이다. PRINTERS 폴더가 존재하고 SYSTEM, Administrators, Users 그룹에 적절 권한이 부여되어야 한다.
icacls %SystemRoot%\System32\spool\PRINTERS # 권한 복구 예 icacls %SystemRoot%\System32\spool /inheritance:e icacls %SystemRoot%\System32\spool\PRINTERS /grant Users:(OI)(CI)M 7. 서비스 격리와 확장 모듈 충돌 차단
인쇄 드라이버와 렌더러는 기본적으로 스풀러 프로세스에서 동작한다. 불안정 드라이버는 스풀러를 끊는다. 다음 옵션으로 분리 실행을 강제한다.
- 인쇄 격리 활성화: 프린트 서버 속성 > 고급 > 분리된 인쇄 드라이버 선택한다.
- PrintIsolationHost 동작 확인:
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\IsolationHost" /s - 문제 확장 모듈(DLL) 식별 시 비활성화 또는 제거한다.
8. 포트 프로토콜 전환: WSD·IPP → 표준 TCP/IP
WSD 또는 IPP over USB/Network는 자동 탐지에는 유리하나 불안정 네트워크에서 스풀러 재시작을 유발하기 쉽다. IP 또는 호스트명을 고정한 표준 TCP/IP 포트로 전환한다.
제어판 > 장치 및 프린터 > 프린터 속성 > 포트 > 포트 추가 > 표준 TCP/IP 포트 > 프린터 IP 입력 > SNMP 상태 사용 해제(장비가 SNMP 미지원이면 필수) 9. 네트워크 프린터 환경 추가 점검
- DNS 역방향 조회 불일치 시 포트 해상도 지연이 발생하므로 호스트 파일 또는 정규 이름을 일치시킨다.
- 방화벽에서 인쇄 관련 규칙(Spooler-In-TCP 515, RPC, SMB 445)을 확인한다.
- 서버 중심 배포 환경은 Point and Print 정책 신뢰 수준을 확인한다.
10. 레지스트리 기반 고급 조정
변경 전 레지스트리 백업을 권장한다.
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Print" "%userprofile%\Desktop\Print_Reg_Backup.reg" | 키 경로 | 값 | 효과 |
|---|---|---|
| HKLM\System\CurrentControlSet\Control\Print | RetryPopups(0) | 팝업 재시도 억제로 무한 재시작 방지 |
| HKLM\System\CurrentControlSet\Control\Print | DisableRpcTcp(1) | 특정 RPC/TCP 충돌 회피 |
| HKLM\System\CurrentControlSet\Control\Print\Printers\<프린터> | Attributes 재설정 | 양방향·오프라인 고정 해제 |
11. 드라이버 재배포 표준 절차
- 문제 프린터 제거 후 Print Processors와 Monitors에 남은 항목을 확인한다.
- 인쇄 관리 콘솔에서 드라이버 삭제 후 시스템 재부팅한다.
- 제조사 WHQL 서명 드라이버를 수동 설치한다.
- 테스트 인쇄를 XPS Viewer → 인쇄로 먼저 검증한다.
12. 앱·렌더링 경로 A/B 테스트
응용 프로그램별 렌더링 이슈를 분리하기 위해 다음 경로로 교차 검증한다.
- 메모장, 워드패드, 브라우저, PDF 뷰어 각각에서 인쇄 테스트한다.
- XPS 프린터로 출력 후 실제 프린터로 변환 인쇄한다.
- 문제 앱만 실패하면 해당 앱의 플러그인·폰트 캐시를 초기화한다.
13. 보안 솔루션과 스풀러 예외 설정
엔드포인트 보안 소프트웨어가 spoolsv.exe, spool 경로, 네트워크 포트를 차단하면 서비스가 종료된다. 실시간 감시 예외에 다음을 추가한다.
%SystemRoot%\System32\spool\* %SystemRoot%\System32\spoolsv.exe C:\Windows\System32\spool\drivers\* 14. 현업용 점검·복구 순서(플로우)
- 서비스 상태 확인 및 재시작한다.
- Spool PRINTERS 폴더 정리한다.
- 드라이버 격리 및 문제 드라이버 제거한다.
- 포트 TCP/IP 고정 전환한다.
- SFC/DISM로 OS 무결성 복구한다.
- 권한·폴더·보안 예외 재구성한다.
- 레지스트리 고급 조정은 최후에 적용한다.
15. 원클릭 복구 스크립트(관리자 PowerShell)
다음 스크립트는 로그 캡처 포함 최소 복구 패스이다.
# 관리자 PowerShell $log = "$env:USERPROFILE\Desktop\SpoolerFix_$(Get-Date -f yyyyMMdd_HHmmss).log" "== Start $(Get-Date) ==" | Out-File $log -Encoding utf8
Stop-Service Spooler -Force
"Stopped Spooler" | Tee-Object -FilePath $log -Append
$paths = @("$env:SystemRoot\System32\spool\PRINTERS")
foreach($p in $paths){ if(Test-Path $p){ Get-ChildItem $p -File | Remove-Item -Force -ErrorAction SilentlyContinue } }
권한 복구
icacls "$env:SystemRoot\System32\spool" /inheritance:e | Tee-Object -FilePath $log -Append
icacls "$env:SystemRoot\System32\spool\PRINTERS" /grant "Users":(OI)(CI)M /T | Tee-Object -FilePath $log -Append
무결성 검사 권장(선택)
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Start-Service Spooler
(Get-Service Spooler).Status | Tee-Object -FilePath $log -Append
"== End $(Get-Date) ==" | Tee-Object -FilePath $log -Append
Write-Output "Saved log to $log"
16. 문제별 대응 매핑 표
| 현상 | 즉시 조치 | 영구 조치 |
|---|---|---|
| 대기열 파일 손상 | PRINTERS 비우기 | 디스크 검사 및 전원 이벤트 점검 |
| 특정 모델만 크래시 | Generic 드라이버로 테스트 | 제조사 최신 WHQL 드라이버 교체 |
| 네트워크 프린터 불안정 | TCP/IP 포트 전환 | DNS/DHCP 정리, SNMP 비활성 |
| 업데이트 후 시작 불가 | SFC/DISM | 드라이버 재배포, 누적 업데이트 재설치 |
| 보안 솔루션 차단 | 실시간 감시 일시 해제 | 예외 경로 등록 |
17. 로그 기반 근본원인 분석(행동 지표)
- 이벤트 ID 7031: 서비스 예기치 종료 반복 발생이면 드라이버 격리·포트 전환을 우선 시행한다.
- PrintService-Admin 로그에서 DLL 이름이 명시되면 해당 드라이버/확장 모듈 제거한다.
- 재현 테스트는 소량 페이지와 PDF/XPS 기준으로 단계적으로 확대한다.
18. 예방 관리 체크리스트
- 분기 1회 스풀 폴더 청결 점검한다.
- 프린터 펌웨어와 드라이버를 동일 메이저로 유지한다.
- WSD/IPP 자동 포트 사용을 피하고 고정 IP를 운영 표준으로 한다.
- 새 장비 도입 시 격리 모드 기본 정책을 배포한다.
FAQ
스풀러가 재부팅마다 꺼지는 경우 무엇을 먼저 확인하나?
PRINTERS 폴더 손상 여부와 시작 유형 자동 설정을 우선 확인하고, 이벤트 로그에서 충돌 DLL을 식별한 뒤 드라이버 격리 모드를 적용한다.
WSD 포트에서만 실패한다면 대안은 무엇인가?
표준 TCP/IP 포트를 생성해 장비의 고정 IP로 연결하고 SNMP 상태 확인을 끈다. IP 충돌과 DNS 불일치를 동시에 점검한다.
드라이버를 삭제했는데 폴더 파일이 남아 재설치가 실패한다면?
인쇄 관리 콘솔에서 드라이버 제거 후 스풀러 중지 상태에서 drivers\x64\3 폴더 잔여 파일을 삭제하고 재부팅 후 재설치한다.
보안 프로그램이 스풀러를 차단하는지 어떻게 알 수 있나?
보안 로그에서 차단 이벤트와 프로세스 경로를 확인하고 예외에 spoolsv.exe와 스풀 경로를 추가해 재현 여부를 확인한다.
한 대의 프린터만 문제라면 장비 결함일 수 있나?
가능하다. 동일 모델 다른 장비로 포트만 교체 연결하여 비교 테스트하고, 장비 펌웨어 업데이트와 네트워크 포트 모듈 상태를 점검한다.