In Server 2003/2008 if the user is not a "Power User" in the system the VB6 printer object does not "see" the printers on the system, therefore you cannot use code like below:

dim prntr as printer
for each prntr in printers
if printer.name="HP" then set printer = prntr
next

I have found the code below that will list printers in Server 2003 even for non power users.

Dim objWMIService As Object
Dim objPrinters As Object
Dim objPrinter As Object
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
For Each objPrinter In objPrinters
strPrinter = objPrinter.Name
List1.AddItem strPrinter
Next

The question I have is how can you then set the VB6 printer object to the printer you want, or is this not even possible? "Set printer = objPrinter.name" does not work.

Is this just a limitation of VB6 in Server? Is there any workaround?