From: TP on
I agree with Vera.

In this context, a 3rd-party printer driver is defined as
one that did not ship with the OS. The drivers that ship
with the OS are all WHQL-certified and thus digitally
signed.

The list of drivers that shipped with windows can be
found in the i386 directory of the installation cd, in a
file named ntprint.inf (a copy of ntprint.inf is on the
server as well, but could have been modified). Additionally,
you can find the actual driver files for comparison sake in
the driver cache, located here on your 2003 server:

C:\WINDOWS\Driver Cache\i386\driver.cab

Instead of trying to track down and eliminate all drivers
that didn't ship with the OS, it is probably easiest to
simply eliminate all drivers that are not digitally signed.

There are two approachs to this that come to mind,
I will explain the first in detail:

APPROACH 1--Manually check each installed driver
to see if it is digitally signed.

You can get a list of the drivers installed on your server
with a script. Copy the text below into notepad, and save
it to your server as printdrv.vbs (be careful of line wraps):

********** Begin script text below this line

const HKLM = &H80000002
sComp = "."
Set out = WScript.StdOut

out.WriteLine "Version 3 Drivers:"
out.WriteLine

Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& sComp & "\root\default:StdRegProv")

sPath = "SYSTEM\CurrentControlSet\Control" _
& "\Print\Environments\Windows NT x86\Drivers\Version-3"

oReg.EnumKey HKLM, sPath, aKeys

For Each subkey In aKeys
out.WriteLine subkey
Next

out.WriteLine
out.WriteLine "Version 2 Drivers:"
out.WriteLine

sPath = "SYSTEM\CurrentControlSet\Control" _
& "\Print\Environments\Windows NT x86\Drivers\Version-2"

oReg.EnumKey HKLM, sPath, aKeys

For Each subkey In aKeys
out.WriteLine subkey
Next

********** End script text above this line

Open up a command prompt, change into the directory
where you saved the above file, and type this:

cscript printdrv.vbs>drivers.txt
notepad drivers.txt

At this point Notepad should be open with a list of
the printer drivers installed on your TS. You may
want to print the list to make things easier.

Still on your TS, open up the Printers folder, and then
choose File-->Server Properties. On the Drivers tab,
click Add Driver, then Next.

Find each Version 3 driver on your printed list and see if
it has a green check next to it. If it does that means it is
digitally signed and can remain. If not, make a note of that
so that you can remove the driver later.

After you have completed the above, it is time to remove
the drivers. If you have any version 2 drivers, remove
them along with the drivers that were not digitally signed.

At this point you should follow the instructions that Vera
gave you regarding mapping drivers.

APPROACH 2--Remove ALL printer drivers and allow
the digitally-signed ones to be automatically re-installed.

First thing you should do is to disable the installation of
non-signed drivers. This is done in the local security
policy of the TS at this location:

Security Settings-->Local Policies-->Security Options

Devices: Unsigned driver installation behavior

Set to "Do not allow installation"

Remove all drivers from the server. As users connect,
some printers will not auto-create because a mapping
to a built-in driver doesn't exist.

At this point you should follow the instructions that Vera
gave you regarding mapping drivers.

After reading all of the above I think you can start to
see the benefits of a universal printer driver solution,
like Vera asked you to consider.

-TP

JayKon wrote:
> We have been having a problem where our Terminal Services box hangs,
> sometimes to the point of having to press the reset button on the
> hardware.
>
> Windows 2003 5.2 (SP1)
> Terminal Services 5.2 (SP1) (always the same?)
> SQL Server 2000
> About 15-25 users logged in at a time.
>
> I've been watching the event logs carefully and have found that
> between 3-7 minutes before the system hangs, we get an Application
> error on spoolsv.exe (pasted in at the bottom). This puts a popup on
> the system console and the computer room is not easily accessible.
>
> It seems like, if we do go to the console and click OK, the problem
> clears. However, if we do a remote desktop, that session will also
> hang and the server hangs a little faster (speculation).
>
> We also have the problem of users default printer changing when they
> login to the Terminal Services server; however, we believe we know
> how to fix that
> (http://support.microsoft.com/default.aspx/kb/302361/en-us). Still, I
> believe that this is somehow related (we'll be fixing that next
> week).
>
> A tech at the vendor supplying our primary software believes someone
> installed printer drivers that are not TS compliant and feels that
> the popup on the console reinforces that line of thinking. I have no
> clue and can't tell one print driver from another.
>
> I'm the DBA, not a Windows (or TS) Admin, so I'm a bit out of my
> league and need some help.
>
> Thanks,
> Jay
>
> -----------------------------------------
> Event Type: Error
> Event Source: Application Error
> Event Category: (100)
> Event ID: 1000
> Date: 12/6/2006
> Time: 3:45:25 PM
> User: N/A
> Computer: PEIDB
> Description:
> Faulting application spoolsv.exe, version 5.2.3790.1830, faulting
> module rpcrt4.dll, version 5.2.3790.1830, fault address 0x00021861.
>
> For more information, see Help and Support Center at
> http://go.microsoft.com/fwlink/events.asp.
> Data:
> 0000: 41 70 70 6c 69 63 61 74 Applicat
> 0008: 69 6f 6e 20 46 61 69 6c ion Fail
> 0010: 75 72 65 20 20 73 70 6f ure spo
> 0018: 6f 6c 73 76 2e 65 78 65 olsv.exe
> 0020: 20 35 2e 32 2e 33 37 39 5.2.379
> 0028: 30 2e 31 38 33 30 20 69 0.1830 i
> 0030: 6e 20 72 70 63 72 74 34 n rpcrt4
> 0038: 2e 64 6c 6c 20 35 2e 32 .dll 5.2
> 0040: 2e 33 37 39 30 2e 31 38 .3790.18
> 0048: 33 30 20 61 74 20 6f 66 30 at of
> 0050: 66 73 65 74 20 30 30 30 fset 000
> 0058: 32 31 38 36 31 21861

From: TP on
It occurs to me that I could write a small program in my
free time. It would have a computed hash for each driver
file that shipped with windows, and then compare this
hash to the currently-installed printer driver files.

If there are any mismatches or unknown files, it could
retrieve the printer driver name from the registry and
display this to the user.

Not perfect, but they would have an idea which printer
drivers to take a closer look at.

-TP

Vera Noest [MVP] wrote:
> I'm afraid that you have quite some work ahead of you :-(
>
> To be absolutely clear: you should *not* re-install those 3rd party
> drivers, just uninstall them.
> And then *only* use drivers that came with the Windows OS CDrom.
>
> You can identify the vendor by searching for the .dll file for that
> printer, right-click it - Properties - Version - Company.
> Everything that does *not* say "Microsft" as the company is a 3rd
> party driver.
>
> Since you have so many different printers, you might consider a 3rd
> party "driver free" printing solution, like ThinPrint, triCerat or
> Print-IT.
> For more information and URLs check my website, under "Printing"
> _________________________________________________________
> Vera Noest
> MCSE, CCEA, Microsoft MVP - Terminal Server
> TS troubleshooting: http://ts.veranoest.net
> ___ please respond in newsgroup, NOT by private email ___

From: JayKon on
Thanks guys.

This is complex enough that we've decided to bring someone in to deal with
it. I'm just the DBA and the Windows guys are much more operations & network
guys.

I appreciate the help.

Thanks,
Jay

"JayKon" wrote:

> We have been having a problem where our Terminal Services box hangs,
> sometimes to the point of having to press the reset button on the hardware.
>
> Windows 2003 5.2 (SP1)
> Terminal Services 5.2 (SP1) (always the same?)
> SQL Server 2000
> About 15-25 users logged in at a time.
>
> I've been watching the event logs carefully and have found that between 3-7
> minutes before the system hangs, we get an Application error on spoolsv.exe
> (pasted in at the bottom). This puts a popup on the system console and the
> computer room is not easily accessible.
>
> It seems like, if we do go to the console and click OK, the problem clears.
> However, if we do a remote desktop, that session will also hang and the
> server hangs a little faster (speculation).
>
> We also have the problem of users default printer changing when they login
> to the Terminal Services server; however, we believe we know how to fix that
> (http://support.microsoft.com/default.aspx/kb/302361/en-us). Still, I believe
> that this is somehow related (we'll be fixing that next week).
>
> A tech at the vendor supplying our primary software believes someone
> installed printer drivers that are not TS compliant and feels that the popup
> on the console reinforces that line of thinking. I have no clue and can't
> tell one print driver from another.
>
> I'm the DBA, not a Windows (or TS) Admin, so I'm a bit out of my league and
> need some help.
>
> Thanks,
> Jay
>
> -----------------------------------------
> Event Type: Error
> Event Source: Application Error
> Event Category: (100)
> Event ID: 1000
> Date: 12/6/2006
> Time: 3:45:25 PM
> User: N/A
> Computer: PEIDB
> Description:
> Faulting application spoolsv.exe, version 5.2.3790.1830, faulting module
> rpcrt4.dll, version 5.2.3790.1830, fault address 0x00021861.
>
> For more information, see Help and Support Center at
> http://go.microsoft.com/fwlink/events.asp.
> Data:
> 0000: 41 70 70 6c 69 63 61 74 Applicat
> 0008: 69 6f 6e 20 46 61 69 6c ion Fail
> 0010: 75 72 65 20 20 73 70 6f ure spo
> 0018: 6f 6c 73 76 2e 65 78 65 olsv.exe
> 0020: 20 35 2e 32 2e 33 37 39 5.2.379
> 0028: 30 2e 31 38 33 30 20 69 0.1830 i
> 0030: 6e 20 72 70 63 72 74 34 n rpcrt4
> 0038: 2e 64 6c 6c 20 35 2e 32 .dll 5.2
> 0040: 2e 33 37 39 30 2e 31 38 .3790.18
> 0048: 33 30 20 61 74 20 6f 66 30 at of
> 0050: 66 73 65 74 20 30 30 30 fset 000
> 0058: 32 31 38 36 31 21861
>