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

  • Organizations are increasingly gravitating toward mobile-first application development as they assess the need to revamp their application portfolios to support touch computing and mobility. Consumerization has brought higher expectations for application usability along with the mobile devices themselves. Enterprises are increasingly shifting their new application acquisitions and development efforts toward mobile platforms. With this backdrop, it is natural to expect application platform vendors to invest in …

  • The nature of the financial services industry places a myriad of international compliance requirements on a company's IT team, as well as an expectation by its customers to deliver the high test levels of performance and reliability. To survive and thrive, businesses in the industry must not only keep pace with customer demand but gain competitive advantage. Those demands mean the IT team must be at the forefront of adopting emerging technologies

Most Popular Programming Stories

More for Developers

RSS Feeds

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