Chris...
This solution works for me. Note that it employs COM and not a reg read...
BTW, is your Waterloo the same as mine?
code:
$LogPath="\\freya\logging\LOG"
$LogFile=$LogPath+"\@USERID.LOG"
; get the default printer **********************************
$i=0
$j=0
$printers=""
$defprinter=""
FOR EACH $prnval IN Split(WMIQuery("default","Win32_Printer",@WKSTA),"|")
$i=$i+1
FOR EACH $prnname IN Split(WMIQuery("Deviceid","Win32_Printer",@WKSTA),"|")
$j=$j+1
IF $i == $j AND $prnval = -1 ; this is the default printer
$defprinter = $prnname
ENDIF
NEXT
NEXT
; get all the printers *************************************
FOR EACH $prnname IN Split(WMIQuery("Deviceid","Win32_Printer",@WKSTA),"|")
$printers=$printers+$prnname
NEXT
; write to file ********************************************
;IF REDIRECTOUTPUT($LogFile,0) = 0 ; output appends to file content
IF REDIRECTOUTPUT($LogFile,1) = 0 ; output overwrites file content
@USERID+" - "+@DAY+" "+@MDAYNO+" "+@MONTH+" "+@YEAR+" - "+@TIME??
"Name : "@FULLNAME?
"Computername : "@WKSTA?
"Domain : "@DOMAIN?
"Logon Domain : "@LDOMAIN?
"Logon Server : "@LSERVER?
"Printers : "$printers?
"Default Printer :"$defprinter?
ENDIF
; write to screen ******************************************
IF REDIRECTOUTPUT("") = 0
?"All done"?
ENDIF
;
FUNCTION WMIQuery($what,$where, OPTIONAL $computer)
DIM $strquery, $objenumerator, $value
IF NOT $computer $computer="@WKSTA"
ENDIF
$strquery = "Select $what From $where"
$systemset = GetObject("winmgmts:{impersonationLevel=impersonate}!//$computer")
$objenumerator = $systemset.execquery($strquery)
FOR EACH $objinstance IN $objenumerator
IF @error = 0 AND $objinstance <> ""
$=Execute("$$value = $$objInstance.$what")
$wmiquery="$value"+"|"+"$WMIQuery"
ENDIF
NEXT
$wmiquery=Left($wmiquery,Len($wmiquery)-1)
EXIT @error
ENDFUNCTION
[ 25. October 2002, 13:07: Message edited by: Waltz ]