Це розповідь про вирішення незначних проблем з роботою одного ПК, та мережевого принтера. Але все по порядку.
Так як раніше я працював системним адміністратором, а зараз я працюю програмістом, я спочатку зроблю постановку задачі з коротким описом проблеми.
Опис проблеми:
До наших енікейщиків надійшла заявка, мовляв принтер на одному з комп’ютерів періодично перестає друкувати. А потім магічним чином, через деякий час, знову починає працювати.
На підприємстві де я зараз працюю, іноді так трапляється, що з невідомих причин щось перестає працювати. А що трапляється найчастіше? Так «в мене не друкує принтер», або «не вмикається комп’ютер»! От же, будемо розбиратись з нашим випадком!
Примітка: Відразу зазначу, що права адміністратора нам знадобляться! Але, лише один раз.
Так трапляється, що служба «Диспетчер друку» перестає працювати, і для того щоб можна було й далі друкувати документи на принтері, потрібно або перезавантажити комп’ютера, або ж перезапустити службу «Spooler» (вона ж «Диспетчер друку»).
Перше не зовсім зручно, бо потрібно зберегти всі документи. А друге не завжди можливо, особливо, якщо працювати доводиться без прав адміністратора.
Програміст звісно ж завжди працює з правами адміністратора, але річ не в тім.
А якщо ускладнити проблему відсутністю нормального «Active Directory», та ще й без «Group Policy Object». То все стає досить сумно. Бо саме на ці граблі мені тут довелось наступити!
Так адмін на підприємстві є, але нажаль зараз дуже сильно хворіє, а виконувати його обов’язки, зобов’язали одного з енікейщиків, що найдовше працює на підприємстві.
Як я зазначив вище, раніше я працював системним адміністратором, і на теперішньому місці роботи, з багатьох причин, іноді доводиться допомагати як користувачам так і енікещикам з різними проблемами.
За замовчуванням служба «Диспетчер друку» перезапускається двічі, а потім потребує перезапуску ПК, або допомоги адміна.
Звісно можна встановити пункт «Подальші збої» теж в опцію «Перезапуск служби», але бувають винятки, коли це не допомагає. Саме це й трапилось.
Тому якщо спробувати перезапустити службу з правами користувача, то побачимо повідомлення про відсутність прав. Наприклад в консолі це виглядає так:
Постановка задачі:
Потрібно надати можливість перезапускати службу «Диспетчера друку» без надання адміністративних прав користувачу.
Швидкий фікс на цей випадок є! Тут нам в пригоді стає вбудований системний інструмент «Service controller». То ж притупимо!
Запускаємо консоль від імені адміністратора, й перш за все перевіряємо себе, чи не робив хто, потрібні нам маніпуляції до нас, бо інакше, цей спосіб нам не підійде. В вікні консолі вводимо команду:
sc sdshow spooler
В відповідь на неї ми повинні будемо побачити щось на зразок цього:
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
До цього рядка нам необхідно додати дозвіл на маніпуляції з цією службо для всіх користувачів:
(A;;0x30;;;WD)
Задавати необхідні параметри можна за допомогою команди:
sc sdset spooler (Тут наша команда)
В кінцевому результаті вона повинна буде мати вигляд:
sc sdset spooler D:(A;;0x30;;;WD)(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Після її виконання, ще раз виконайте команду «sc sdshow spooler», щоб переконатись, що необхідний параметр було додано.
На цьому маніпуляції завершуються. І все що нам потрібно це дати користувачу bat файл з командами:
net stop spooler
net start spooler
Також можна спробувати зробити автоматичний запуск цього bat файлу встановивши параметр пункту «Наступні збої» в режим запуску певної програми, в ролі якої буде наш bat файл.
Теоретично, це повинно позбавити користувача від потреби самостійно запускати bat файл, якщо ним буде помічено проблему з друком файлів.
Але як вони так роблять, що в них на пустому місці щось перестає працювати, я й досі не маю уявлення =)
Корисні посилання: