Сегодня я хочу поделиться с вами моими собственными «best practice», которые я вывел для себя и использую на своих серверах.
Никакого Великого ДАО конечно же не будет, но будут картинки, но, извините, чутка замазанные, ибо поднимать ради этого свежую виртуальную машинку мне не охота, поэтому скрины будут с рабочих серверов.
Начну я, как обычно, издалека, а именно с введения.
Введение.
Правила которые я вывел для себя:
1. Принтеры только Hewlett-Packard, то есть никаких Canon, Lexmark, Brother, Samsung и прочего-прочего.
2. Оптимально наличие аппаратных принт-серверов, можно HP, можно Dlink, а можно сразу покупать принтеры с буковкой N — это означает Network =)
3. Драйверы только PCL 5e.
4. HP серии 10XX, и прочие софтовые принтеры не использовать.
5. RDC Client 6.1 или выше (сильно актуально есть у вас есть USB принтеры)
При соблюдении этих простых правил у меня не возникает проблем со спулером вообще, он работает, не падает, принтеры мапятся нормально, не двоятся и не висят «мёртвыми душами» после логофа пользователя.
Логичные вопросы:
Вопрос: а что делать если куплен вагон принтеров без сетевых интерфейсов?
Ответ: закупать аппаратные принт-серверы.
Вопрос: а что делать если куплен вагон не НР принтеров?
Ответ: пытаться использовать TS Easy Print (Windows Server 2008) или ScrewDrivers, или же менять парк принтеров.
Установка драйверов принтеров на ТС (Терминальный Сервер).
Для того что бы принтеры мапились нормально важно соблюдать одинаковость версии драйвера как на клиенте так и на сервере, поэтому если у вас нет единого места хранения драйверов для принтеров рекомендую всё же озадачиться и сделать оное хранилище, в дальнейшем оно вам пригодится.
подготавливаем спулер:
1. заходим на терминальный сервер, идём в пуск-настройка-принтеры и факсы.
2. в этом окне выбираем меню «файл — свойства сервера — дополнительный параметры»
3. выносим папку спула на удобный нам диск, и даём на неё права EveryOne — Full Access.

устанавливаем драйверы
1. распаковываем архив с драйверами.
2. заходим на терминальный сервер, идём в пуск-настройка-принтеры и факсы.
3. в этом окне выбираем меню «файл-свойства сервера — драйверы — добавить»

4. указываем разрядность драйверов какие мы будем добавлять и пусть к папке из пункта 1.
5. повторяем операцию для всех принтеров, которые будут использоваться на этом терминальном сервере.
6. никаких установщиков драйверов и прочих приложений запускать не надо!
Оптимизация.
убираем мониторы печати
1. пуск-выпонить-cmd
2. net stop spooler
3. regedit — HKLM\SYSTEM\CurrentControlSet\Print\Monitors
4. удаляем оттуда все другие мониторы реестра, кроме дефолтовых, в итоге у вас получится вот так:

удивительные вещи:
Многие администраторы, которые следят за своими серверами, наверняка наблюдали интерсеные записи в логах в том, что служба Windows Installer регулярно устанавливает некий компонент «HP Bi-Di component», и при этом msiexec.exe от имени SYSTEM бывает кушает «100%/количество CPU»
процессора, и сам spoolsv.exe «кушает» по 500-700-1000мегабайт оперативной памяти, хотя вроде бы и не с чего, да и логоф/логон пользователя бывает по 10-20-30 секунд на совершенно не нагруженный сервер, да ещё и ивенты разные сыпятся, что нехватает места в реестре, или ошибка записи/чтения из реестра. У всего этого одни корни и сейчас мы с вами и это исправим.
1. если вы запустили спулер — то остановите его снова, net stop spooler.
2. пуск-выполнить- regedit — HKU\.Default\Software\Hewlett-Packard
3. Экспортируйте эту веточку себе на память, когда я раскопал это — я пришёл в ужас, она у меня занимала 270Мб!

4. удаляем ветку Hewlett-Packard
5. создаём вертку Hewlett-Packard
6. выставляем на неё разрешения для «пользователи» и «администраторы» как показанно на скриншоте:

единственно что галочку «Удаление» можно не ставить, это у меня стояло для отладки.
никому туда писать не надо!
7. идём дальше в HKLM\Software\Microsoft\Windows NT\Terminal Server\Install\Software\, делаем бэкап веточки Hewlett-Packard и удаляем её.
8. открываем «мой компьютер» и идём в «c:\windows\system32\spool\drivers\w32x86» (для х64: c:\windows\system32\spool\drivers\x64), ищем там файлик HPZBDI32.msi ((иногда ещё cioum32.msi) для х64 файлики вместо 32 будут иметь 64 на конце) и переименовываем их во что нибудь другое, например в HPZBDI32.msi.bak.
9. создаём пустые файлы с оригинальными именами.
10. shutdown /r /t 01
11. создаём логон скрипт:
reg delete HKCU\software\hewlett-packard /f
и вешаем его на пользователей терминального сервера.
12. повторяем все шаги данного действия после добавления новых драйверов принтеров.
что мы получаем в итоге:
— мы получаем спулер который не жрёт память, а спокойно живёт в пределах 300-400мегабайт даже на высоконагруженных терминальных серверах:

— мы получаем быстрый вход пользователй и беспроблемный мап принтеров.
— существенное уменьшение реестра как самого сервера в целом, так и пользовательского.