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
  • 
    HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows
  • Write down the value of "Device" as you'll be using it soon
  • Locate the following registry key
  • 
    HKEY_USERS\.DEFAULT\Software\Microsoft\WindowsNT\CurrentVersion\Windows\ 
    
  • Copy the previous information into the field "Device"
  • Reboot your PC
That's it! Now you can print from a Windows NT service.

Warning!

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

Acknowledgements

Thanks to my friend Maurizio Picco for his usefull help.



Comments

  • 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.

    Reply
  • 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?

    Reply
  • 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.

    cheers

    Bernard

    Reply
  • 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(
    _T("WINSPOOL"),
    pszDevice, NULL, pDevMode
    );

    where pszDevice is the UNC name of the printer ie
    \\server\printername

    IMHO, no registry copy needed

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

Top White Papers and Webcasts

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

  • "Security" is the number one issue holding business leaders back from the cloud. But does the reality match the perception? Keeping data close to home, on premises, makes business and IT leaders feel inherently more secure. But the truth is, cloud solutions can offer companies real, tangible security advantages. Before you assume that on-site is the only way to keep data safe, it's worth taking a comprehensive approach to evaluating risks. Doing so can lead to big benefits.

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds