У меня есть сервер Windows 2003 с несколькими принтерами, и время от времени служба диспетчера очереди печати дает сбой с этим сообщением в средстве просмотра событий: сбойное приложение spoolsv.exe, версия 5.2.3790.0, сбойный модуль ZSR.DLL, версия 6.20.1625.0 , адрес ошибки 0x0001f979. Очевидно, было бы неплохо полностью предотвратить это, но до тех пор я хотел бы, чтобы он перезапускался автоматически. Я установил для него значение «Перезапустить службу» при первом / втором / последующих сбоях на вкладке «Свойства / Восстановление», но он не перезапускается. Я могу запустить его вручную, и тогда он отлично работает. Как я могу настроить его на автоматический перезапуск?
Вы можете запланировать выполнение задачи через определенные промежутки времени
net stop spooler
net start spooler
Однако корнем проблемы может быть поврежденный драйвер принтера. Попробуйте очистить все драйверы печати после удаления принтеров. Загрузите обновленные драйверы и снова добавьте принтеры.
Проблема, похоже, связана с лазерным принтером HP 1020, и для меня это не удивительно. Эти 1020 действительно ужасны при использовании с серверами печати, поскольку это очень бюджетные принтеры на базе Windows Host, а драйверы, написанные для них HP, просто не на высоте.
Мы, как правило, не позволяли нашим сотрудникам покупать их, вместо этого прося их выбрать нижнюю часть линейки HP, в которой есть подходящая карта Ethernet. 1020-е годны для использования дома, но не в деловой среде.
Вы найдете длительные обсуждения сбоев диспетчера очереди печати, проблем с DLL и конфликтов с DEP в Интернете, связанных с этими принтерами, например, на Форум HP.
Но я предлагаю сэкономить время на устранении неполадок, убрать его и получить что-нибудь приличное.
Я бы попытался очистить драйвер (ы) принтера. Попробуйте удалить драйвер принтера и переустановить последнюю версию от поставщика.
Хорошую страницу для устранения неполадок с драйверами принтера можно найти здесь: Как очистить драйверы принтера.
Вы можете запланировать простой сценарий vbs, подобный этому, для периодического перезапуска службы диспетчера очереди печати на локальном компьютере, если это необходимо.
strComputer = "." strSvcName = "Spooler" set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") set objService = objWMI.Get("Win32_Service.Name='" & strSvcName & "'") If objService.State= "Stopped" Then objService.StartService() End If
Но это всего лишь способ решения вашей проблемы, вы можете проверить все драйверы, чтобы узнать, обновлены ли они.
Net Stop Spooler && Net Start Spooler
Вставьте это в запланированное задание и запускайте каждые несколько минут.
Лично я хотел бы посмотреть, какой драйвер печати установил zsr.dll и удалить / переустановить его. Скорее всего, он поврежден и нуждается в замене.
Вы можете установить сторонний инструмент мониторинга сервисов, например Service Hawk, чтобы перезапустить его за вас. Это поможет.
Чтобы добавить мои два цента: zsr.dll не является файлом DLL Windows, поэтому это должна быть dll драйвера принтера (скорее всего, HP). Мой совет - обновить драйверы принтера на сервере и установить параметры восстановления на сервере, чтобы перезапустить службу в случае сбоя. ИМХО, это лучший вариант, чем планирование пакетного файла для остановки и перезапуска службы по расписанию.