Включить изоляцию драйверов принтеров

Обновлено: 17.05.2024

Я заметил, что когда принтер или драйвер портится на сервере Windows, он обычно блокирует или убивает диспетчер очереди печати, и все не могут печатать, пока он не исправлен. Обычно нам приходится помещать проблемный принтер на другой сервер, поэтому, когда он выходит из строя, он не забирает с собой всю группу. Это предполагает, что мы когда-либо выясним, какой принтер является проблемой.

Есть ли способ, чтобы одно плохое яблоко не испортило кучу? Даже если это другая форма обслуживания принтера, она будет работать, если пользователю не сложно найти принтер и установить драйверы.

Я знаю, что это не помогает вашей текущей ситуации с сервером, но кое-что примечательно: Windows Server 2008 R2 и Windows 7 позволят вам настроить изоляцию драйвера принтера . Это позволяет вам запускать проблемные принтеры как отдельный процесс, чтобы они не убивали спулер.

Когда мы столкнулись с такими проблемами, мы обнаружили, что это больше связано со смешанными драйверами модели HP на сервере печати, чем с плохим драйвером. После того, как мы перевели все принтеры HP для использования универсального драйвера печати, наши проблемы исчезли.

Это все еще звучит как плохой водитель для меня. Вы просто перевели все на использование одного не плохого драйвера. Технически, да, это была проблема с драйверами, но я не думаю, что по отдельности какие-либо драйверы вызывали проблемы, только при смешивании разных моделей на одном сервере печати у нас были проблемы. Имейте в виду . известно, что универсальные драйверы были очень ненадежными, несмотря на то, что они, казалось, работали на вас

Мы только что прошли через подобные проблемы. Определенные документы, напечатанные определенными пользователями на определенных принтерах, будут полностью испортить службу спулинга на сервере win 2k3 и из-за этого выбьют все остальные принтеры.

Мы действительно не нашли подходящего способа избежать полного удаления спулера, кроме множества серверов печати, что явно не очень дружелюбно. Однако мы создали дополнительные очереди для проблемных принтеров, которые используют драйверы PCL или PS (в основном, тот, который в данный момент не используется). Назовите это то же самое с -ps / -pcl после него и посоветуйте пользователям, у которых есть проблемы с печатью.

Также стоит проверить в файле services.msc на сервере печати, что служба спулера настроена на автоматический перезапуск. Таким образом, вы можете избежать нескольких минут простоя.

Я думаю, вы могли бы также посоветовать, что люди, которым нужно печатать на хитром принтере, делают это с помощью прямой IP-печати, таким образом исключая сервер печати из уравнения вместе.

Обходной путь, пока вы не получите более функциональный драйвер для неисправного принтера, - это запуск сценария при сбое диспетчера очереди печати (свойства восстановления в службе). Сценарий очистит все документы из каталога спула, а затем перезапустите спулер. Существует небольшая вероятность потери заданий на печать, но обычно, когда я вижу это, единственное задание в очереди - это оскорбительное задание.

Другие вещи, которые нужно проверить, это убедиться, что вы используете последние версии драйверов или вернетесь к предыдущей версии. Убедитесь, что ваш принтер и прошивка IO (Jetdirect?) Обновлены. Наконец, я обнаружил, что стандартный порт TCP / IP гораздо надежнее, чем при использовании типа порта HP или поставщика. У нас есть серверы печати, которые обрабатывают более 600 000 страниц в месяц, и тип порта, похоже, больше всего влияет на стабильность работы сервера печати или нет.

Обновить:

Для скрипта (пакетного файла) это будет что-то простое:

Затем запустите пакетный файл как часть службы восстановления после первого сбоя. Возможно, вы захотите получать уведомления о последующих сбоях.

изоляция драйвера

Что такое изоляция драйвера

Вот так вот, очень часто выглядит ошибка, когда происходит конфликт драйверов, на сервере печати.

Как изолировать драйвер принтера в Windows 7-01

Как следует из названия, технология Printer Driver Isolation (PDI) реализует изоляцию драйверов принтеров в отдельные процессы, отделенные от процесса диспетчера печати (spoolsv.exe). Поэтому, если случается любая ошибка в драйвере принтера, то она затрагивает только процесс, которые подгрузил этот драйвер, а не процесс spoolsv.exe, тем самым предотвращая его падение и улучшая надежность сервера печати. Кроме того, эта новая функция обеспечивает возможность изоляции новых версий драйверов с целью тестирования или отладки, а также возможность выявить сбойный драйвер.

Процесс, осуществляющий загрузку драйверов, которые должны работать изолированно от «Диспетчера Печати», называется PrintIsolationHost.exe.Существует три режима работы технологии изоляции драйверов:

  • None – Драйвера принтеров загружаются процессам диспетчера печати (spooler), т.е. в этом режиме система работает как обычно
  • Shared – Драйвера настроены на работу с одним общим экземпляром процесса PrintIsolationHost.exe, отделенного от процесса spoolsv.exe. Это режим работы по-умолчанию.
  • Isolated – Каждый драйвер принтера настроен на использование своего собственного экземпляра процесса PrintIsolationHost.exe.

Чтобы проверить, поддерживает ли драйвер принтера технологию PDI: перейдите в следующую ветку реестра.

HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\выбор версии ОС\Drivers\Version-3\драйвер принтера\PrinterDriverAttributes

изоляция драйвера принтера

  • 0: Драйвер не поддерживает PDI
  • 2: Драйвер принтера поддерживает PDI

Если же значение отсутствует, значит оно равно 0, и драйвер PDI не поддерживает, как в моем примере у HP LaserJet Professional M1212nf MFP, хочу отметить, что вендоры могу выпускать свежие драйвера, которые уже будут поддерживать изолирование драйвера в отдельном процессе, так что если в реестре Windows вы обнаружили значение "0", то попробуйте найти новую версию драйверов на ваш принтер.

Как изменить режим работы Printer Driver Isolation

Есть несколько способов настроить режим работы режима изоляции драйверов печати:

  • Конфигурация с помощью INF –файла драйвера печати, придется слегка поразбираться в синтаксисе
  • Консоль Print Management Console (PMC)
  • Групповые политики
  • INF файл драйвера печати

С помощью inf файла драйвера принтера можно определить, поддерживает ли драйвер PDI или нет. Этот inf файл содержит ключ DriverIsolation, который определяет поддержку PDI. Соответственно, если значение этого параметра 0, значит данный драйвер PDI не поддерживает.

По умолчанию все драйвера в Windows лежат в папке:

файл INF изоляция драйвера

Консоль Print Management (PMC)

С помощью новой консоли управления принтерами (PMC) можно достаточно просто управлять изоляцией драйверов. Если открыть консоль "Управление печатью (PMC)" и перейти в раздел драйверов, то в правой панели можно увидеть список установленных в системе драйверов, а в колонке Driver Isolation будет отображаться режим работы PDI драйвера принтера.

Изоляция драйвера

Чтобы изменить режим работы драйвера, нужно щелкнуть правой кнопкой по нужному драйверу и выбрать опцию ‘Set Driver Isolation‘. Доступны следующие опции:

  • None
  • Shared
  • Isolated
  • System Default (None)

В русской версии:

  • Нет
  • Общий доступ
  • Изолирован
  • По умолчанию отсутствует

Как изолировать драйвер принтера

Примечания:
Опция "По умолчанию отсутствует (System Default)" – означает, что драйвер работает в соответствии со своими стандартными настройками или настройками групповой политики.
Также если групповая политика ‘Execute Print drivers in isolated processes’ отключена (Disabled), тогда режим изоляции PDI поменять не получится.

Как изолировать драйвер принтера в Windows 7-03

Как изолировать драйвер принтера в Windows 7-03

Групповые политики, позволяющие управлять изоляцией драйверов

Существует две настройки групповой политики, позволяющие настроить режим изоляции драйверов принтеров. Найти их можно в разделе:

Computer Configuration\Administrative Templates\Printers / Конфигурация компьютера/Административные шаблоны/Принтеры
  • Execute print drivers in isolated processes (Выполнять драйверы принтеров в изолированных процессах)

Выполнять драйверы принтеров в изолированных процессах

  • Override print driver execution compatibility setting reported by print driver (Переопределить параметр совместимости выполнения драйвера печати)
  • Политика: Execute print drivers in isolate processes

Настройки этой политики определяют будут ли драйвера принтера выполняться в одном или отдельных процессах. Если драйвера принтеров загружены изолированным процессом (или процессами), то любой сбой в драйвере печати не приведет к падению службы Print Spooler. В том случае если вы активировали или не настраивали данную политику, Диспетчер печати будет выполнять драйвера в изолированном процессе.

Если вы отключите данную политику, то драйвера принтеров будут исполняться в процессе диспетчера печати (как в версиях Windows XP/2003 и более ранних версиях ОС).
Политика: Override print driver execution compatibility setting reported by print driver

Политика определяет, должен ли Диспетчер печати переопределять режим работы PDI, заданный в драйвере принтера. Т.е. политика активирует выполнение драйверов в изолированном процессе, даже если драйвер принтера не совместим.

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

Помимо технологии Printer Driver Isolation в Windows 7 и Windows 2008 появилась еще очень удобная технология, позволяющая существенно облегчить работы по управлению драйверами печати на терминальных серверах. Познакомится с ней можно в статье Easy Print в Windows 2008 Server

Сегодня я бы хотел поделиться своим опытом устранения проблем печати на терминальном сервере Microsoft.

Подробности под катом.

Вместо Intro

Наверняка, почти каждый системный администратор, работающий с Windows и, в частности, с терминальным сервером, сталкивался с проблемами печати.
Разрывается телефон, у всех одна и та же проблема: «Нажимаю на печать — ничего не происходит!». Идем смотреть логи и видим следующую картину:

image

Причины и решения

Итак, из-за чего может происходить подобная ситуация? Большую часть подобных ситуаций вызывают установленные на сервере драйверы.

  • Необходимо помнить, что драйверы у клиентов и на сервере должны быть идентичны
  • Убедитесь, что включена изоляция драйверов
  • Удалите все драйвера на сервере и попробуйте использовать TS Easy Print
  • Попробуйте решения сторонних компаний

А теперь пройдемся подробнее по всем пунктам. Для начала установим на наш терминальный сервер роль «Службы печати и документов».

image

Это позволит нам удобно управлять драйверами и принтерами, установленными в системе.

Идентичные драйвера

Думаю, тут особо не о чем рассказывать. Стоит помнить, что драйвера необходимо брать с официальных страниц изготовителя принтера. Так же еще один момент — стабильнее всего ведут себя PCL5. Если есть возможность выбора между PCL5 и PCL6 — стоит установить PCL5 (соответственно, серверу и клиенту).

Изоляция драйверов

В Windows 2008 появилась замечательная возможность изоляции драйверов принтера. Теперь драйвер принтера подгружается не Spoolsv.exe а специальным процессом PrintIsolationHost.exe. При «вылетании» драйвера принтера «слетает» только один экземпляр PrintIsolationHost.exe, а сама служба «Диспетчера печати» остается работоспособной, что, как понимаете, весьма влияет на настроение пользователей ;)

Чтобы включить данную возможность, нам необходимо открыть редактор локальной групповой политики (gpedit.msc) и пройти следующим путем: «Параметры компьютера -> Административные шаблоны -> Принтеры». Находим и включаем следующие пункты:

  • Выполнить драйверы принтеров в изолированных процессах
  • Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати

image

TS Easy Print

Видимо, вняв наконец стенаниям системных администраторов, компания Microsoft решила что-то сделать с необходимостью ставить зоопарк драйверов на терминальный сервер и падающим из-за этого spoolsv.exe. В итоге, на свет родилась технология TS Easy Print. Ключевой особенностью является, то, что больше нам не нужно устанавливать на сервер драйвера для каждого принтера — вместо этого используется унифицированный драйвер Remote Desktop Easy Print, соответственно, мы уходим от проблемы падающего спулера — ведь все операции с печатью выполняются на компьютере клиента.
Для того, чтобы явно определить, что мы хотим использовать на терминальном сервере TS Easy Print, необходимо пройти опять же в редактор локальной групповой политики (gpedit.msc) по следующему пути: «Параметры компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров». Нас интересуют следующие пункты, которые надо включить:

  • Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола
  • Перенаправлять только используемый по умолчанию принтер клиента

image

Далее, необходимо очистить наш сервер от лишних драйверов принтеров. Это можно сделать в менеджере роли «Службы печати и документов».
Внимательно удаляйте драйвера! Необходимо оставить в живых такие вещи, как «Remote Desktop Easy Print» и «Microsoft XPS Document Writer». Именно они и отвечают за передачу печати на клиента.

Решения сторонних компаний

Избавиться от проблемы падающего спулера призваны такое ПО как, например, ScrewDrivers (сайт). Оно предоставляет клиент-серверную архитектуру.
Сервер ScrewDrivers — это компонент, который необходимо установить на серверы, на которых планируется использовать печать в терминальном сеансе. Клиент ScrewDrivers должен быть установлен на рабочих станциях. Именно этот компонент позволяет создать на терминальном сервере виртуальные принтеры, которые соответствуют локальным принтерам пользователя.
В целом, напоминает Easy Print, но не бесплатно (впрочем, есть лекарства ;).

Как решить проблемы подсистемы печати в терминальном сервере

Наверняка, почти каждый системный администратор, работающий с Windows и, в частности, с терминальным сервером, сталкивался с проблемами печати.
Разрывается телефон, у всех одна и та же проблема: «Нажимаю на печать — ничего не происходит!».

Причины и решения

Итак, из-за чего может происходить подобная ситуация? Большую часть подобных ситуаций вызывают установленные на сервере драйверы.

Необходимо помнить, что драйверы у клиентов и на сервере должны быть идентичны
Убедитесь, что включена изоляция драйверов
Удалите все драйвера на сервере и попробуйте использовать TS Easy Print
Попробуйте решения сторонних компаний

А теперь пройдемся подробнее по всем пунктам. Для начала установим на наш терминальный сервер роль «Службы печати и документов».

Это позволит нам удобно управлять драйверами и принтерами, установленными в системе.

Идентичные драйвера

Думаю, тут особо не о чем рассказывать. Стоит помнить, что драйвера необходимо брать с официальных страниц изготовителя принтера. Так же еще один момент — стабильнее всего ведут себя PCL5. Если есть возможность выбора между PCL5 и PCL6 — стоит установить PCL5 (соответственно, серверу и клиенту).

Изоляция драйверов

В Windows 2008 появилась замечательная возможность изоляции драйверов принтера. Теперь драйвер принтера подгружается не Spoolsv.exe а специальным процессом PrintIsolationHost.exe. При «вылетании» драйвера принтера «слетает» только один экземпляр PrintIsolationHost.exe, а сама служба «Диспетчера печати» остается работоспособной, что, как понимаете, весьма влияет на настроение пользователей ;)

Чтобы включить данную возможность, нам необходимо открыть редактор локальной групповой политики (gpedit.msc) и пройти следующим путем: «Параметры компьютера -> Административные шаблоны -> Принтеры». Находим и включаем следующие пункты:

Выполнить драйверы принтеров в изолированных процессах
Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати

TS Easy Print

Видимо, вняв наконец стенаниям системных администраторов, компания Microsoft решила что-то сделать с необходимостью ставить зоопарк драйверов на терминальный сервер и падающим из-за этого spoolsv.exe. В итоге, на свет родилась технология TS Easy Print. Ключевой особенностью является, то, что больше нам не нужно устанавливать на сервер драйвера для каждого принтера — вместо этого используется унифицированный драйвер Remote Desktop Easy Print, соответственно, мы уходим от проблемы падающего спулера — ведь все операции с печатью выполняются на компьютере клиента.
Для того, чтобы явно определить, что мы хотим использовать на терминальном сервере TS Easy Print, необходимо пройти опять же в редактор локальной групповой политики (gpedit.msc) по следующему пути: «Параметры компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров». Нас интересуют следующие пункты, которые надо включить:

Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола
Перенаправлять только используемый по умолчанию принтер клиента

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

Далее, необходимо очистить наш сервер от лишних драйверов принтеров. Это можно сделать в менеджере роли «Службы печати и документов».

Внимательно удаляйте драйвера! Необходимо оставить в живых такие вещи, как «Remote Desktop Easy Print» и «Microsoft XPS Document Writer». Именно они и отвечают за передачу печати на клиента.

Решения сторонних компаний

Избавиться от проблемы падающего спулера призваны такое ПО как, например, ScrewDrivers (сайт). Оно предоставляет клиент-серверную архитектуру.
Сервер ScrewDrivers — это компонент, который необходимо установить на серверы, на которых планируется использовать печать в терминальном сеансе. Клиент ScrewDrivers должен быть установлен на рабочих станциях. Именно этот компонент позволяет создать на терминальном сервере виртуальные принтеры, которые соответствуют локальным принтерам пользователя.
В целом, напоминает Easy Print, но не бесплатно (впрочем, есть лекарства ;).

Читайте также: