Windows 기반 서버에 서비스 팩, 업데이트 롤업 또는 프린터 핫픽스를 설치한 후에는 사용자가 인쇄할 수 없습니다.

이 문서에서는 서버에 서비스 팩 또는 프린터 핫픽스를 설치한 후 인쇄할 수 없는 문제를 해결하는 데 도움이 됩니다.

적용 대상: Windows Server 2012 R2
원본 KB 번호: 832219

증상

Windows Server에서 Unidrvui.dll 파일을 업데이트하는 서비스 팩, 업데이트 롤업 또는 핫픽스를 설치한 후 사용자는 다음 두 가지 증상이 모두 발생할 수 있습니다.

  • 클라이언트 또는 서버가 인쇄를 시도하면 인쇄 스풀러 서비스가 응답을 중지(또는 "중단")하는 것처럼 보이고 다음 오류 메시지가 나타납니다.

    인쇄 작업을 만들 수 없습니다.

  • 서버 콘솔에서 테스트 페이지를 인쇄하려고 하면 다음 오류 메시지가 표시됩니다.

    테스트 페이지를 인쇄하지 못했습니다.

  • 드라이버 추가 또는 프린터 추가 마법사는 디바이스 및 프린터를 사용하거나 인쇄 관리 콘솔을 사용하여 드라이버를 설치하려고 할 때 응답을 중지합니다.

원인

이 동작은 PCL(Unidrv 기반 프린터 제어 언어) 프린터 드라이버가 많은 서버에 서비스 팩 또는 핫픽스 패키지를 설치하는 경우에 발생할 수 있습니다.

많은 Unidrv 기반 PCL 프린터 드라이버가 있는 서버에 Unidrvui.dll 업데이트하는 서비스 팩 또는 핫픽스 파일을 설치하는 경우 서버는 이러한 드라이버의 스풀러 효율성을 높이는 데 사용되는 구문 분석된 이진 프린터 설명 파일(.bud 파일)을 다시 생성하는 데 오랜 시간(최대 2시간)을 소비할 수 있습니다. 이 시간 동안 인쇄 스풀러는 들어오는 인쇄 작업을 받을 수 없으며 인쇄 큐가 가득 찼음을 나타내는 메시지를 클라이언트에 반환할 수 있습니다. 이는 일회성 구문 분석 작업이며 구문 분석된 이진 .bud 파일이 성공적으로 다시 생성된 후에는 발생하지 않습니다.

GPD 파서 파일 버전이 변경되었으므로 GPD(일반 프린터 설명) 파일에서 생성된 이진 .bud 파일을 다시 생성해야 합니다. 모든 Unidrv 기반 PCL 드라이버를 구문 분석한 후 스풀러는 인쇄 작업을 다시 받을 수 있습니다. 이 때문에 Microsoft는 이 최대 2시간 .bud 파일 컴파일을 수용하기 위해 많은 Unidrv 기반 PCL 프린터 드라이버가 있는 서버에서 서비스 팩 및 핫픽스 설치를 예약하는 것이 좋습니다.

해결 방법

이 문제를 resolve 위해 서버가 업그레이드된 각 드라이버 파일에 대해 모든 Unidrv 기반 프린터 드라이버의 구문 분석을 완료할 수 있는 충분한 시간을 예약한 다음, 이러한 파일을 사용하는 각 프린터에 대해 충분한 시간을 예약합니다.

해결 방법

중요

이 절, 방법 또는 작업에는 레지스트리를 수정하는 방법에 대한 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 레지스트리를 백업 및 복원하는 방법에 대한 자세한 내용은 Windows에서 레지스트리를 백업 및 복원하는 방법을 참조하세요.

서버가 모든 Unidrv 기반 프린터 드라이버의 구문 분석을 완료할 때까지 기다릴 수 없는 경우 캐시된 모든 이진 프린터 설명 파일(.bud 파일)을 수동으로 제거한 다음 자동으로 다시 만들도록 합니다. 서버의 속도에 따라 이 자동 다시 만들기가 더 짧은 시간 안에 완료될 수 있습니다. 일반적으로 이 작업은 30분 이내에 완료됩니다.

참고

Print Spooler가 시작되면 최신 버전의 Unidrv.dll 설치합니다. 결과적으로 .bud 파일은 최신이 아닙니다. .bud 파일은 .ppd 파일의 컴파일된 버전이며 해당 .ppd 파일에서 완전히 다시 생성될 수 있습니다. 이 때문에 .bud 파일을 제거할 수 있습니다.

이렇게 하려면 다음과 같이 하십시오.

  1. 인쇄 스풀러 서비스를 중지합니다. 이렇게 하려면 명령 프롬프트에서 다음 명령을 실행합니다.

    net stop spooler
    
  2. 모든 .bud 파일을 검색한 다음 현재 시간과 날짜에 스탬프가 찍어 있는지 확인합니다. 파일은 오늘 날짜와 함께 표시됩니다.

  3. 오늘 날짜 이전의 날짜 및 타임스탬프를 가진 모든 .bud 파일을 제거합니다. 이러한 파일은 다음 폴더에 있습니다.

    %SYSTEMROOT%\System32\Spool\Drivers\w32x86\3

  4. 다음 레지스트리 키가 있는 경우 제거합니다.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    이렇게 하려면 다음과 같이 하십시오.

    1. 시작, 실행을 차례로 클릭하고 열기 상자에 regedit를 입력한 다음 확인을 클릭합니다.

    2. 다음 레지스트리 하위 키를 찾은 다음 클릭합니다.
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

    3. 레지스트리 메뉴에서 레지스트리 파일 내보내기를 클릭합니다.

    4. 파일 이름 상자에 printkey를 입력한 다음 저장을 클릭합니다.

      참고

      나중에 인쇄 레지스트리 키를 복원해야 하는 경우 저장한 Printkey.reg 파일을 두 번 클릭하여 복원할 수 있습니다.

    5. 다음 레지스트리 하위 키가 있는 경우 를 찾은 다음 클릭합니다.
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    6. 편집 메뉴에서 삭제를 클릭한 다음 예를 클릭하여 PostSPUpgrade 레지스트리 키의 제거를 확인합니다.

      참고

      컴퓨터를 다시 시작한 후 PostSPUpgrade 레지스트리 키가 다시 나타날 수 있습니다. 이 동작은 아직 구문 분석되지 않은 다른 .bud 파일이 있는 경우에 발생합니다. 이러한 파일을 구문 분석한 후에는 이 레지스트리 키가 자동으로 제거됩니다.

  5. 서버를 다시 시작합니다.

서버를 다시 시작한 후 약 30분 후에 사용자가 인쇄 기능을 사용할 수 있습니다.

추가 정보

.NET Framework 3.0에서는 이제 unidrv.dll 파일이 XPS 인쇄에 포함됩니다. unidrv.dll 파일은 이 동작을 트리거할 수도 있습니다.