In the past week or so I answered the question of “how to read or set the default printer from a SalesLogix script” to two different business partners. I’m putting it here so I can avoid the need to keep typing this out.
The most common way to do this you’ll find is via API calls to GetProfileString/WriteProfileString (as Thijs posted). However, this won’t help you in v6 as you cannot make calls to external DLLs from VBScript. An easy way to do this from VBScript is to use the Shell object to read/set the values directly in the registry. This approach is far easier than using the WMI obejcts and makes for much cleaner code IMO. This should also work fine in SalesLogix 5 or prior scripts – or legacy in v6 – making your code more “upgrade resistant”.
Dim objShell
Dim sPath
Dim sPrinter
Dim sPort
Dim sDriver
Dim ar_PrnInfo
Set objShell = CreateObject("WScript.Shell")
sPath = "HKCUSoftwareMicrosoftWindows NTCurrentVersionWindowsDevice"
ar_PrnInfo = Split(objShell.RegRead(sPath), ",")
If IsArray(ar_PrnInfo) Then
sPrinter = ar_PrnInfo(0)
sPort = ar_PrnInfo(2)
sDriver = ar_PrnInfo(1)
End If
MsgBox "Default Printer: " & sPrinter & vbCrLf & _
"Printer Port: " & sPort & vbCrLf & _
"Printer Driver: " & sDriver
It also works fine to write it back out this way (to set the default). You essentially just need to write back to that same location using “Printer Name, driver, port”. So it would look something like this:
Set objShell = CreateObject("WScript.Shell")
sPath = "HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindowsDevice"
objShell.RegWrite sPath, "HP DeskJet 895Cse,winspool,Ne00:"
Get the idea?




Great scriptin’ 😉
Thank you! It was the only script that worked!