Как решить проблему с «отваливающимися» принтерами на терминальном сервере Windows Server 2008?

Системный администратор IT и автоматизация бизнеса
← На главную

Проблема исчезновения принтеров в терминальных сессиях — это классическая «болезнь» операционных систем семейства Windows Server 2008. Пользователи часто сталкиваются с ситуацией, когда при входе в систему папка «Устройства и принтеры» оказывается пустой, или принтер, который был доступен в начале рабочего дня, внезапно пропадает из списка доступных для печати устройств. Рассмотрим подробно причины этого явления и разберем пошаговые методы стабилизации работы системы печати.

Анализ причин падения службы печати

Прежде чем приступать к активным действиям, проанализируем ситуацию. Основная причина нестабильности заключается в работе службы Spooler (Диспетчер печати). В Windows Server 2008 драйверы принтеров (особенно от производителей HP и Canon) работают в том же адресном пространстве, что и сама служба. Если драйвер допускает ошибку при обработке сложного задания или некорректно отвечает на запрос статуса устройства, он «тянет» за собой всю службу печати, что приводит к её остановке или зависанию у всех пользователей сервера.

Способ 1. Автоматизация перезапуска службы Spooler и очистка очереди

Разберем самый оперативный метод решения, который позволяет быстро вернуть принтеры пользователям без перезагрузки всего сервера. Выясним причину: часто очередь печати переполняется временными файлами, которые блокируют работу службы. Для решения этой задачи создадим командный файл (батник), который будет выполнять полную очистку системы печати.

Создадим текстовый файл с расширением .bat и следующим содержимым:


setlocal
net stop spooler
del /Q /S /F /A c:\WINDOWS\system32\spool\PRINTERS\*.*
net start spooler

Проанализируем, что делают эти команды. Сначала мы принудительно останавливаем службу spooler. Затем команда del очищает папку PRINTERS, где хранятся временные файлы очереди печати (с расширениями .SHD и .SPL). Флаги /Q /S /F /A позволяют удалить даже скрытые и защищенные файлы без лишних вопросов системы. После очистки мы снова запускаем службу. Этот скрипт рекомендуется запускать от имени администратора при первых признаках проблем.

Способ 2. Настройка автоматического восстановления службы через консоль

Посмотрим на ситуацию глубже: стандартные настройки Windows подразумевают, что после третьей ошибки службы она перестает пытаться перезапуститься самостоятельно. Исправим это поведение. Рассмотрим использование утилиты sc для изменения параметров восстановления Диспетчера печати.

Запустим командную строку от имени администратора и выполним следующую команду:

sc failure spooler actions= restart/10000/restart/10000/restart/20000 reset= 600

Разберем параметры этой настройки: мы указываем системе перезапускать службу через 10 секунд после первого и второго сбоев, и через 20 секунд после всех последующих. Параметр reset= 600 означает, что счетчик ошибок будет сбрасываться каждые 10 минут (600 секунд). Это гарантирует, что система не «сдастся» и будет пытаться поднять печать бесконечно.

Способ 3. Использование технологии MS Easy Print

Проанализируем архитектурное решение от Microsoft. Чтобы избежать конфликтов драйверов, была создана технология Easy Print, которая позволяет пробрасывать принтеры через протокол RDP без установки драйверов конкретных моделей на сервер. Для её работы на клиентах (Windows 7 и выше) должен быть установлен .NET Framework 3.5 SP1.

Чтобы принудительно задействовать этот механизм, настроим групповые политики (GPO). Пройдем по шагам:

  1. Нажмем Win+R и введем gpedit.msc.
  2. Перейдем в раздел: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров.
  3. Найдем параметр «Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола» и установим его в состояние «Включено».

Это заставит сервер сначала пытаться использовать универсальный драйвер, который гораздо стабильнее специфического ПО от производителей.

Способ 4. Тонкая настройка принтеров HP и изоляция драйверов

Если вы используете принтеры HP, выясним одну важную деталь: они крайне чувствительны к функции двустороннего обмена данными. В терминальной среде эта функция часто вызывает зависание очереди. Рассмотрим, как это отключить:

  1. Зайдем в «Устройства и принтеры» на сервере.
  2. Откроем «Свойства принтера» (именно свойства, а не настройки).
  3. На вкладке «Порты» снимем галочку «Разрешить двусторонний обмен данными».
  4. Также в настройках порта рекомендуется снять галочку «Статус SNMP разрешен».

Дополнительно применим механизм Изоляции драйверов, доступный в Windows Server 2008 R2. В оснастке «Управление печатью» выберем нужный драйвер, нажмем правую кнопку мыши и выберем «Изоляция драйверов» -> «Изолированный». Теперь сбой этого драйвера не приведет к падению всей службы Spooler, так как он будет запущен в отдельном процессе PrintIsolationHost.exe.

Способ 5. Использование стороннего ПО (ScrewDrivers)

Если штатные средства Windows не помогают, рассмотрим проверенное решение от сторонних разработчиков — программу ScrewDrivers. Принцип её работы заключается в создании виртуального принтера-посредника. Вы устанавливаете серверную часть на Windows Server 2008 и клиентскую часть на рабочие станции пользователей.

Программа автоматически перехватывает поток печати, сжимает его и передает на локальный принтер пользователя, полностью игнорируя проблемы совместимости драйверов в RDP. Это решение считается «золотым стандартом» для старых терминальных серверов, где печать является критически важным бизнес-процессом.

Способ 6. Установка через локальный порт

В некоторых случаях (как описано в сообщениях форума) помогает создание «локального порта» для сетевого принтера. Разберем этот алгоритм:

  1. На сервере выберите «Добавить локальный принтер».
  2. Выберите «Создать новый порт», тип порта — Local Port.
  3. В качестве имени порта укажите сетевой путь к принтеру, например: \\Имя_ПК\Имя_Принтера.
  4. Установите драйвер.

Этот метод часто работает стабильнее, чем стандартное подключение сетевого принтера, так как система воспринимает его как локально подключенное устройство.

Подводя итог, отметим: наиболее эффективным подходом является сочетание Способа 2 (настройка автоматического восстановления службы) и Способа 3 (использование Easy Print). Это минимизирует влияние человеческого фактора и специфических ошибок драйверов на общую работоспособность сервера.

← На главную