Sep 132012
 

Wer schon mal das Problem hatte, das alle Drucker beim Login gelöscht werden soll um dann nur die Drucker zu verbinden die relevant sind, wird schnell auf das Problem der Druckereinstellungen stroßen. Was ist nun wenn ein Benutzer sich den beidseitigen Druck für einen Drucker eingestellt hat?
Die Lösung hierzu ist recht einfach, exportieren der Druckereinstellungen bevor die Drucker durch das Loginskript gelöscht werden. Wie das geschehen kann ist nachfolgend dargestellt, hierbei werden die Einstellungen der Drucker in %temp% exportiert und anschließend werden die Druckerverbindungen gelöscht (mit DELPRINTERCONNECTION, dies ist ein Befehl aus kix-script):

;*** Drucker aus Registry auslesen ***

 $Index = 0
 :Loop
 IF @ERROR=0
  $TempPrinter = $TempPrinter + EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$Index) + ","
  $Index = $Index + 1
  GoTo "Loop"
 ENDIF
 $TempPrinter = Trim($TempPrinter)
 $Length = Len("$TempPrinter") - 2
 $TempPrinter = Left("$TempPrinter","$Length")
 $PrinterArray = Split("$TempPrinter",",")
 ;*** Druckereinstellungen exportieren ***
 $zz = 0
 FOR $Count = 0 to $Index-2
  IF LEFT($PrinterArray[$Count],2) = "\\"
   $PrinterFileName = RIGHT($PrinterArray[$Count],LEN($PrinterArray[$Count])-2)
   $PrinterFileNameA[$zz] = LEFT($PrinterFileName,INSTR($PrinterFileName,"\")-1)
   $PrinterFileNameB[$zz] = RIGHT($PrinterFileName,LEN($PrinterFileName) - INSTR($PrinterFileName,"\"))
   SHELL 'rundll32 printui.dll,PrintUIEntry /q /Ss /n "' + $PrinterArray[$Count] + '" /a "%temp%\Druckereinstellungen_' + $PrinterFileNameA[$zz] + '.' + $PrinterFileNameB[$zz]  + '.dat"'
   $zz = $zz + 1
   DELPRINTERCONNECTION($PrinterArray[$Count])
  ENDIF
 NEXT
 $maxzz = $zz

Nun müssen diese Einstellungen, nachdem die Drucker wieder Verbunden wurden ja auch wieder importiert werden. Das kann wie folgt geschehen:

 ;*** Einstellungen der Drucker wieder importieren ***
 FOR $zz = 0 to $maxzz
  SHELL 'rundll32 printui.dll,PrintUIEntry /q /Sr /n "\\' + $PrinterFileNameA[$zz] + '\' + $PrinterFileNameB[$zz] + '" /a "%temp%\Druckereinstellungen_' + $PrinterFileNameA[$zz] + '.' + $PrinterFileNameB[$zz]  + '.dat"'
 NEXT

 

Sorry, the comment form is closed at this time.