WELCOME

Welcome to the Print Detective user guide!
(Version 1.2.1.5)


Introduction to Print Detective

INTRODUCTION

Print Detective is an information gathering utility that can be used for troubleshooting problems related to print drivers. It enumerates all printer drivers from the specified Windows machine, including driver specific information. It can also be used to delete specified print drivers. It allows for log file capabilities, as well as providing a command-line interface.

Print Detective


REQUIREMENTS

  • Minimum operating system: Windows XP/Windows Server 2003 R2
  • Administrative privileges required to delete printer drivers


INSTALLATION

To install Print Detective, simply copy the PrintDetective.exe executable file to the desired location, for the appropriate platform. For example, on a 32-bit system, use the PrintDetective.exe from the x86 directory, and on a 64-bit system use the one from the x64 directory. There is no installer required as the application is contained in a standalone executable file.

The Print Detective package includes the PrintDetective.exe file for the 32-bit and 64-bit versions of Windows (located in the x86 and x64 folders respectively), and the PrintDetective.chm user guide.


Features and capabilities

FEATURES/CAPABILITIES

  • Quick isolation of non-native print drivers
  • Ability to view the following driver related information:
    • Driver Name
    • Provider
    • Dependent Files(s)
    • Environment
    • Driver Path
    • Data File
    • Configuration File(s)
    • Help File
    • Monitor Name
    • Default Data Types
    • Previous Names
    • Manufacturer Name
    • OEM URL
    • Hardware ID
  • Ability to log driver information to a CSV log file
  • Ability to delete specified drivers
  • Easy searching for specified data (such as problematic DLL's)


NEW IN THIS RELEASE

  • The criteria used to determine non-native/non-Citrix print drivers has been updated and now works properly on all operating systems without crashing
  • The list of print drivers is shown by the print driver name ascending and shows the full column width

NEW FEATURES FROM PREVIOUS 1.1 RELEASES

  • Print Detective now displays all local print driver information automatically upon launch
  • The Citrix UPD is now excluded from the "Non-Microsoft" provider check
  • Created official Print Detective user guide (corresponds to Print Detective version 1.1)
  • Fixed bug where error returned from printer driver enumeration would sometimes be incorrect
  • Updated error handling to automatically translate the Windows error code returned to meaningful text
  • Updated UI to include printer icons next to enumerated printer drivers
  • Created x64 build
  • Added case study to help users understand and troubleshoot Print Detective RPC related printer driver enumeration failures


Context Menu

GUI MODE

Simply run the PrintDetecive.exe executable to launch the program.

To enumerate driver information locally, leave the target machine combo box control empty --> Click Enumerate

Print Detective

Otherwise, enter the name of the target machine in the combo box control and --> Click Enumerate

Print Detective

To delete selected drivers, simply check the box next to the driver that you want to delete, and --> Click Delete Driver(s)

Print Detective
*Note* - Deleting drivers require Administrative privileges
To save output to a CSV File --> Click File --> Click Save Output --> Check the desired output items, select an output file path and --> Click Save

Print Detective

Print Detective

To search output items, simply use the Ctrl+F hotkey sequence or select Find from the main application menu (This can be helpful when searching for known problematic Dlls)

Print Detective

To view Non Microsoft Provider drivers only, select that option from the menu.

Print Detective

You can also select Copy (from the context menu) to easily add an item to the clipboard for easy investigation.

Print Detective


Command Line Support

CONSOLE MODE

  • The syntax for Print Detective is:

    PrintDetective TargetMachine

    Print Detective

  • The above will enumerate print driver information from TargetMachine

    PrintDetective TargetMachine c:\PrintDetectiveLog.csv

    Print Detective

  • The above will enumerate print driver information from TargetMachine and write the driver output to the specified log file


Context Menu

REMOTE PRINTER DRIVER ENUMERATION FAILURES

One of the most useful features of Print Detective is the ability to enumerate printer driver information from remote machines. Print Detective achieves this by calling into the Microsoft Printing API's, which in turn calls into the underlying RPC subsystem for remote communication. Although the remote printer driver enumeration feature works well, one might occasionally receive RPC errors or other enumeration error messages.

In Print Detective 1.1, the printer driver enumeration error handling mechanism was updated - so that it translates the Windows error code returned and displays the error translation in plain text.

One of the most persistent errors that kept occurring when trying to enumerate printer drivers from certain remote machines was Error code 2.

Upon translation it gives this: "The system cannot find the file specified."

This error was being returned from a Microsoft Printing API. The exact same API works against some machines, so it was concluded that there had to be something unique about these remote systems causing this error to be returned.

  • It was found that there is a SPOOLSS named pipe for the Print Spooler service
  • With the help of Microsoft Article ID: 883789, found that this named pipe is not turned on by default for Windows Server 2003 (and above).
    This name pipe can be created by doing the following (taken from this Microsoft article):

    Using the group policy editor, edit the RegisterSpoolerRemoteRpcEndPoint registry value, located under
    HKLM\Software\Policies\Microsoft\Windows NT\Printers

    Description
    Stores configuration data for the policy setting Allow Print Spooler to accept client connections

    Change Method
    To change the value of this entry, use the Group Policy Object Editor (Gpedit.msc). The corresponding policy is located in Administrative Templates\Printers
After enabling the aforementioned policy on the problematic remote machine, Print Detective was able to enumerate its printer driver information without the dreaded Error code 2. This was tested on Windows Server 2003 and Windows Server 2008. See also method 2 from Microsoft Article ID: 883789 for more information.

This is just one example of why Print Detective's enumeration feature can fail, and it happens to be a very likely scenario that can occur (based on the default settings of Windows Server 2003 and above). However, this does not mean that applying the aforementioned policy will resolve all possible print driver enumeration failure cases that can occur. There could be other causes which could lead to a different resolution. Other failure scenarios might include network failures, and underlying operating system RPC failures.

If you encounter other printer driver enumeration failures using Print Detective, then consider the following when troubleshooting:
  • What is the error being returned from Print Detective? (such as "Access is denied" etc)
  • Did you try resolve what the error describes? (such as adjusting permissions if access is denied)
  • Did you look at a network trace to see if the problem is on the network?
  • Do other utilities that perform remote print driver enumeration work?
  • Is the Print Spooler of the local and remote machines functioning correctly? Have you tried restarting them?
  • If it is an RPC failure, consider the following:
    • Print Detective calls into the Microsoft Printing API's
    • These API's internally call into the local Print Spooler to handle enumeration requests
    • The local Print Spooler then tries to connect to the remote machine's Print Spooler's spoolss named pipe (described above)
    • If there are network communication failures (or firewall issues etc.), then the local Print Spooler might not be able to properly communicate with the remote Print Spooler
    • The local Print Spooler then returns this error (typically via LPC) to Print Detective, which then gets returned to the user
    • If you have a hung Print Spooler on the machine where Print Detective is running, or on the target machine, then the Print Spooler might not be able to respond to these requests (or imagine if either Print Spooler crashes due to a corrupted printer driver)
    • This could cause unpredictable types of failures, none of which are due to Print Detective itself
  • If the error message encountered appears to be a Print Detective specific error, please contact Citrix Support Tools and let us know
Hopefully this information is helpful if you encounter any enumeration failures using Print Detective.


ENHANCEMENTS

  • Multi-server selections
  • Integration with Citrix XenApp farms


Report Feedback

REPORTING FEEDBACK

Please send enhancement requests, comments, or feedback to:
Citrix Support Tools