Printing from a Service

Environment: Windows NT 4

The Problem

Have you ever attempted to print from a Windows NT Service?

Some time ago my colleagues and I wrote a TCP/IP server to collect data, analyze it and then print exceptions. Obviously, printing is usually a very simple and typical task for any software engineer.

When I finished developing this application, I then converted it to a Windows NT service. Everything seemed to work well with one exception. The application wouldn't print anything!

With my heart in my hands, I then began the arduous task of walking the registry and searching for a solution. Finally, I found it after a few days.

The solution

  • Locate the following registry key
  • Write down the value of "Device" as you'll be using it soon
  • Locate the following registry key
  • Copy the previous information into the field "Device"
  • Reboot your PC
That's it! Now you can print from a Windows NT service.


Modifing your registry incorrectly can result in serious, system-wide problems. Therefore, use this advice at your own risk.


Thanks to my friend Maurizio Picco for his usefull help.


  • How can i do to print document from SYSTEM account ???

    Posted by Legacy on 01/16/2002 12:00am

    Originally posted by: Barbier J�r�me

    I have a NT Service which start with SYSTEM account.
    During my process i need to print document to a specific printer using 'ShellExecute' with 'printto' verb.
    But I don't manage to retrieve Driver and Port for my printer and the function failed..

    Best regards.

  • Log from NT service without using Event Log

    Posted by Legacy on 02/19/2000 12:00am

    Originally posted by: Tibor Hellvig

    I have converted a program to NT service and now my logging to a regular text file no longer works. Can anyone help?

  • This works for any program called by a service

    Posted by Legacy on 11/21/1999 12:00am

    Originally posted by: Bernard Cheung

    Thanks to this solution, I am able to use Windows NT's AT command or some Scheduler program to schedule print jobs of third party programs.



  • Where's the problem ?

    Posted by Legacy on 11/16/1999 12:00am

    Originally posted by: Bernard Alleysson

    I did not find any problem to print from a service I've written. I'm just using:

    m_hDC = CreateDC(
    pszDevice, NULL, pDevMode

    where pszDevice is the UNC name of the printer ie

    IMHO, no registry copy needed

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Enterprises are increasingly looking to platform as a service (PaaS) to lower their costs and speed their time to market for new applications. Developing, deploying, and managing applications in the cloud eliminates the time and expense of managing a physical infrastructure to support them. PaaS offerings must deliver additional long-term benefits, such as a lower total cost of ownership (TCO), rapid scalability, and ease of integration, all while providing robust security and availability. This report …

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date