I have a windows server 2003 with a few printers, and once in a while the Print Spooler service crashes with this message in the event viewer: Faulting application spoolsv.exe, version 5.2.3790.0, faulting module ZSR.DLL, version 6.20.1625.0, fault address 0x0001f979. Obviously it would be nice to prevent this entirely, but until then, I would like it restart automatically. I have set it to "Restart the Service" on the First/Second/Subsequent Failures on the Properties/Recovery tab, but it does not restart. I can manually start it, and then it works fine. How could I set it to restart automatically?
You could schedule a task to run at regular intervals
net stop spooler net start spooler
However the root of the problem coud be a corrupt print driver. Try clearing out all of the print drivers after deleting the printers. Download updated drivers and add the printers again.
Problem seems to be with an HP 1020 laser printer, and to me that comes as no surprise. These 1020's really are terrible when used with print servers as they are very budget Windows Host based printers and the drivers written for them by HP are just not up to scratch.
We've tended to stop our employees buying them, instead asking them to go for the bottom of the line HP that has a proper ethernet card in it. The 1020's are ok for use at home, but not in the business enviroment.
You'll find lengthy discussions on spooler crashes, DLL issues, and conflicts with DEP on the web to do with these printers, such as on the HP forum.
But my suggestion would be to save the time on troubleshooting, bin it, and get something decent in.
I would try to clean up the printer driver(s). Try to uninstall the printer driver and reinstall the latest one from the vendor.
A nice page for troubleshouting printer drivers can be found here: How to clean up printer drivers.
You can schedule a simple vbs script like this one to restart periodically the Spooler service on the local computer if needed.
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
But this is just a workaround for your problem, you may check all the drivers to see if they are up to date.
Net Stop Spooler && Net Start Spooler
Shove that into a scheduled task and run it every few minutes would probably cover you.
Personally I would be looking at which print driver installed the zsr.dll and remove / reinstall it. Chances are its corrupt and needs replacing.
You could install a third-party service monitoring tool like Service Hawk to restart it for you. That would do the trick.
To add my two cents: zsr.dll is not a Windows dll file so it has to be a printer driver dll (most likely HP). My advice is to update the printer drivers on the server and set the Recovery options on the sevrice to restart the service on failure. IMHO, this is a better option then scheduling a batch file to stop and restart the service on a schedule.