2017-08-30 2 views
1

Ich versuche, die Standarddruckereinstellungen eines Geräts zu bearbeiten. Genauer gesagt, ich versuche jeden Drucktyp in einen gesperrten Druck zu ändern, und dann an jeden einzelnen Benutzer einen Benutzernamen und ein Passwort zuweisen:Standarddruckereinstellungen bearbeiten Auftragstyp mit VBScript

settings to be edited

Jeder ist auf den PCL6-Druckertreiber, aber ich habe keine Ahnung, wie um von VBScript aus darauf zuzugreifen. Hier ist was ich bisher habe. Ich habe es so oft kommentiert, wie ich kann, also hoffentlich, wer auch immer es aufhebt, wenn ich es verlasse, werde es verstehen können. Alles ist in Ordnung:

Option Explicit 

' Tell WSH to resume on errors, otherwise our error handling can't do it's job 
    On Error Resume Next 

' Define variables 
Dim objNetwork, objWMIService, objPrinter 
Dim colInstalledPrinters 
Dim strPrinterServer, strPrinterShare, strUserName, strPassword, strPrinterName 
Dim Return, LocalDefault 
Dim DynamicMessage 
Dim DefaultPrinter 

strPrinterServer = "\\GBDSCWSSC0125" 
strPrinterShare = "GBGBMIL1NPSC000" 
strPassword = "1234" 

msgbox("This tool will set up your default printer with a username and password. When changing default printers, please run this tool again") 
strUserName = CreateObject("WScript.Network").UserName 
DynamicMessage = msgbox("Your username is " & strUserName & vbNewLine & "Is this correct?", vbYesNo) 

If DynamicMessage = vbNo Then 
    strUserName = InputBox("Please enter your username") 
    DynamicMessage = msgbox("Your username is " & strUserName, vbOK) 
End If 

' Get WMIService so we can run WMI queries (windows management instrumentation). Basically a library for controlling windows 
Set objWMIService = GetObject(_ 
    "winmgmts:" & "{impersonationLevel=impersonate}!\\" _ 
    & strComputerName & "\root\cimv2") 

' Run a WMI query to get all the installed printers. This returns a collection so the variable uses the "col" prefix 
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer") 

' The WMI query returns a collection that we need to loop through and check to see if the current printer object is the default printer 
For Each objPrinter in colInstalledPrinters 
    If objPrinter.Default = "True" Then 
     If objPrinter.Name <> "Microsoft Office Document Image Writer" Then 
      LocalDefault = True 
      strPrinterName = objPrinter.Name 
      DynamicMessage = msgbox("Default printer is " & strPrinterName, vbOKOnly) 
     End If 
    End If 
Next 

msgbox("Done!") 

Set objWMIService = Nothing 
Set objNetwork = Nothing 

WScipt.Quit 

Ist das überhaupt möglich?

+0

Welchen Drucker verwendest du? Vielleicht ein RICOH? – JoSerra

+0

Ja, wir haben verschiedene RICOH-Drucker im Büro, aber alle laufen von den gleichen Treibern ab. – JaayB

+0

Hi @JaayB Ricoh-Druckerwarteschlange speichert einige Druckereinstellungen für diesen Registrierungsschlüssel ** HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Drucker \ Drucker \ \ PrinterDriverData \ capsdb_scope :: UI_Customize ** auf PRINT SERVER, der eine XML-Datei enthält . Sie können eine benutzerdefinierte Konfigurationsdatei mit [Printer Driver Packager NX-Software] (http://support.ricoh.com/html_gen/util/PDP/PDP.html) erstellen Ich denke, Sie können die Benutzer-ID von printjob auf den aktuellen Windows-Anmeldenamen setzen , aber ich weiß nicht, wie man das Passwortfeld einstellt. – JoSerra

Antwort

0

Sie können versuchen, Registrierungsschlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ Print \ Printers Einstellung \ Drucker \ Printer Data \ capsdb_scope :: U I_Customize auf dem Druckserver mit diesem Wert:

<?xml version="1.0" encoding="utf-8"?> 
<rcf version="1.0"> 
    <devicesettings drivername="RICOH MP 402SPF PCL 6" independent="yes"> 
    <item name="userid_type" value="windowsloginname"/> 
    <item name="jobtype" value="lockedprint"/> 
    </devicesettings> 
    <featurelock> 
    <item fixvalue="windowsloginname" name="userid_type"/> 
    <item fixvalue="lockedprint" name="jobtype"/> 
    </featurelock> 
    <popupbeforeprint type="jobtype"> 
    <item defaultstring="default" name="username"/> 
    <item defaultstring="blank" name="password"/> 
    <item defaultstring="default" name="userid"/> 
    </popupbeforeprint> 
</rcf> 
+0

Ich kann so weit wie HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Print \ Drucker \ HP Universl Printing PCL 6 \ PrinterDriverData aber ich kann nicht finden Sie eine capsdb_scope :: UI ... in der Registrierung. Verzeihen Sie mir, wenn ich all das ein bisschen ignoriere. Ich habe die Registry vorher bearbeitet, aber immer blind gemacht, weil man mir gesagt hat. Ich brauche vielleicht etwas Zeit, um es zu lesen und zu verstehen. – JaayB

+0

Sie müssen diesen Registrierungseintrag in Ihrem Druckserver (GBDSCWSSC0125) überprüfen. Wie lautet der Name Ihres Druckertreibers? – JoSerra

+0

Ich war ein bisschen frech und suchte nach dem Benutzernamen, den ich in die Druckereinstellungen in der Registrierung eingegeben hatte, und schaffte es, die Felder UserID/Username und Passwort zu finden. Ich versuche nur den zu finden, der jetzt den Typ ändert und ich sollte eingestellt werden .... ich denke. Ich wickle immer noch den Kopf um das XML, um die Registrierung zu ändern, aber es sollte irgendwann klicken. Gefunden in HKEY_CURRENT_USER> SOFTWARE> RICOH> JOBCODE> JCUserID \\ \ JaayB