Druckereigenschaften über AutoIt ändern

  • Hallo. Ich hatte mir vor einiger Zeit für unsere Firma ein Script geschrieben um bei Usern ohne Adminrechte auch Drucker installieren zu können, ohne dass er sich abmelden muss. Das klappte bisher auch ganz gut und zufriedenstellend. Hier ein kleiner wesentlicher Ausschnitt aus dem Script:

    Spoiler anzeigen
    [autoit]

    Func Combo2()
    $read = GUICtrlRead($Combo2)
    DirCreate($driver_path)
    While 2
    If $read = "Service" Then
    Global $treiberexe = "E350.exe"
    Global $treibername = $driver_path & "LMAAL2DA.INF"
    Global $druckername = "Lexmark E352dn PS3"
    Global $druckerport = "nwd-service"
    FileInstall("./E350.exe", $driver_path & $treiberexe, 1)
    ExitLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WEnd
    installdriver($read, $treiberexe, $treibername, $druckername, $druckerport)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func installdriver($read, $treiberexe, $treibername, $druckername, $druckerport)
    Global $driver_path = @ScriptDir & "\tmp\"
    Global $print_vbs = $driver_path & "vbs.exe"
    Global $driver_x86 = $treiberexe
    Global $driver_inf = $treibername
    Global $driver_current = $druckername
    Global $driver_old = $druckername
    Global $print_port = $druckerport
    Global $script_v = FileGetVersion(@ScriptFullPath)
    Global $driver
    Global $driver_processor
    Global $driver_typ

    FileInstall("./vbs.exe", $PRINT_VBS, 1)
    $driver = $driver_path & $driver_x86
    $driver_processor = "Intel"

    ;Entpacke den Treiber an die vordefinierte Stelle
    ShellExecuteWait($driver, '-d"' & $driver_path & '" -s2')
    ;Entpacke die VBS's an die vordefinierte Stelle
    ShellExecuteWait($print_vbs, '-d"' & $driver_path & '" -s1')
    RunWait('cscript "' & $driver_path & 'prnport.vbs" -a -r ' & $print_port & ' -h ' & $print_port & ' -o raw -n 9100', $driver_path, @SW_HIDE)
    RunWait("rundll32 printui.dll,PrintUIEntry /if /b " & '"' & $druckername & '"' & " /f " & '"' & $driver_inf & '"' & " /r " & '"' & $print_port & '"' & ' /m ' & '"' & $driver_current & '"')
    ;RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark T430 PS" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
    sleep(1000)
    Run(@ComSpec & " /c " & "rundll32 printui.dll,PrintUIEntry /Xs /n " & '"' & $druckername & '"' & " printername " & '"' & $read & '"', "", @SW_HIDE);Benennt den gerade installierten Drucker so um, damit man ihn besser erkennen kann
    _GUICtrlListBox_AddString($cList, $read);Fügt den neuen Drucker in der Liste in der GUI hinzu
    GUICtrlSetData($statuslabel, "Der Drucker " & $read & " wurde erfolgreich installiert")
    DirRemove($driver_path, 1)
    EndFunc

    [/autoit]


    Nun haben wir aber auch andere Drucker und damit auch andere Treiber bekommen. Wir verwenden nun nur noch Universaltreiber. Nach der Installation dieser Treiber muss man aber noch händisch die einzelnen Funktionen des Druckers im Druckertreiber zuordnen. Das geht wieder nur unter der Adminkennung. Meine Frage nun an euch ist, ob so Konfigurationen wie das Hinzufügen einer Duplexeinheit (ich sage dem Treiber quasi dass der Drucker duplex drucken kann) auch über AutoIt machbar ist?

    Wahrscheinlich ist das ja nur ein zusätzlicher Parameter der gesetzt werden muss.

    Und noch etwas: Wir haben hier parallel sowohl als auch Drucker mit USB-Anschluss bei uns im Einsatz. Die Treiberinstallation funktion über meine Methode nur mit Paralleldruckern. Wie kann ich auch Drucker mit USB-Anschluss auf diese Art und Weise installieren?