Input from Chris Page

Not sure if this is a "good solution" but it's been in use for some years,
still untidy code I'm afraid. HTH.

Our solution uses Con2Prt.exe from the reskit. Drivers are auto-installed if
necessary.

We call SetUpPrinters in the Login script.
The [Local Printers] section is written by the Audit code which uses WMI to
read the current printers as follows:

code:

;Printers (Local)
$I = 1
WriteProfileString("Y:\@WKSTA\Status.ini","System","Printers", "Status, Name, Location, Default, Shared, Network, Local, Driver, Port, Server, Share, DeviceID")
$Collection = GetObject("winmgmts:").InstancesOf("Win32_Printer")
WriteStatus("")
For each $Item in $Collection
$Data = "" + $Item.Status + ", " + $Item.Name + ", " + $Item.Location + ", " + FormatAttr($Item.Attributes) ;commer added by routine
$Data = $Data + $Item.DriverName + ", " + $Item.PortName + ", " + $Item.ServerName + ", " + $Item.ShareName + ", " + $Item.DeviceID
WriteProfileString("Y:\@WKSTA\Status.ini","System","Printer" + $I, $Data)
If ($Item.Attributes & 64) And (InStr($Item.PortName, "\\") = 0)
;Local Printer
$Data = "" + $Item.Name + ", Driver: " + $Item.DriverName
If ($Item.Attributes & 8) $Data = $Data + ", Shared as: " + $Item.ShareName endif
WriteProfileString("Y:\Stations.ini","Local Printers",@WKSTA, $Data + " LOCATION: " + $Item.Location)
WriteStatus("Local Printer: " + $Item.Name)
WriteStatus(" Driver: " + $Item.DriverName)
WriteStatus(" Shared as: " + $Item.ShareName)
endif
If $Item.Attributes & 4
;Default Printer
$Data = "" + $Item.Name + ", Driver: " + $Item.DriverName
If ($Item.Attributes & 64) And (InStr($Item.PortName, "\\") = 0) $Data = "LOCAL: " + $Data endif
WriteProfileString("Y:\Status.ini","Default Printers",@WKSTA, $Data)
WriteStatus("Default Printer: " + $Item.Name)
WriteStatus(" Driver: " + $Item.DriverName)
WriteStatus(" Location: " + $Item.Location)
endif
$I = $I + 1
Next


We creates an outline of the INI file and the Station's directory if it
doesn't exist thus:

code:

if Exist("Y:\@WKSTA")=0 MD "Y:\@WKSTA" endif
$ret = WriteProfileString("Y:\Stations.ini","Kixtart","Version","$Ver")
$ret = $ret + WriteProfileString("Y:\Stations.ini","Kixtart","PDC","$PDC")
$ret = $ret + WriteProfileString("Y:\Stations.ini","Kixtart","BDC","$BDC")
$ret = $ret + WriteProfileString("Y:\Stations.ini","Kixtart","CDServer","$CDServer")
$ret = $ret + WriteProfileString("Y:\Stations.ini","Kixtart","KIX Version","@KIX")
;create List of Stations and outline of file
$ret = $ret + WriteProfileString("Y:\Stations.ini","Additional Printers","Printer1-5","\\NameOfComputerWithPrinterAttached\ShareName")
$ret = $ret + WriteProfileString("Y:\Stations.ini","Printers","ComputerName","\\NameOfComputerWithPrinterAttached\ShareName")
$ret = $ret + WriteProfileString("Y:\Stations.ini","Stations",@WKSTA,"@Userid at @Time on @Day @MDAYNO @Month @Year @ProductType Ver.@DOS Build @Build @CSD")
$ret = $ret + WriteProfileString("Y:\@WKSTA\Station.ini","Additional Printers","Printer1-5","\\NameOfComputerWithPrinterAttached\ShareName")
$ret = $ret + WriteProfileString("Y:\@WKSTA\Status.ini","System","OS","@ProductType Ver @DOS Build @Build @CSD")
if $ret <> 0 color r/n ? "WARNING: Update Stations.ini errors: $ret, @Error" color w/n endif


[ 16 November 2001: Message edited by: MCA ]

_________________________
email scripting@wanadoo.nl homepage scripting@wanadoo.nl | Links | Summary of Site Site KiXforms FAQ kixtart.org library collection mirror MCA | FAQ & UDF help file UDF kixtart.org library collection mirror MCA | mirror USA | mirror europe UDF scriptlogic library collection UDFs | mirror MCA