
Ich wurde mit der Fehlerbehebung eines Anmeldeskripts auf einem Client-Standort beauftragt, das unter anderem den Standarddrucker festlegt. Das Anmeldeskript ist vbscript, wobei der Drucker mit
Set WshNetwork = CreateObject("WScript.Network")
...
WshNetwork.SetDefaultPrinter(strPrinter)
Der Techniker, der es eingerichtet hat, sagte, es würde funktionieren. Der Kunde sagte, es funktioniere nicht. Meine Tests zeigen, dass es nur zeitweise funktioniert. Momentan habe ich so etwas:
WScript.Echo GetDefaultPrinter
For i = 0 to 50
if strPrinter <> GetDefaultPrinter then
WshNetwork.SetDefaultPrinter(strPrinter)
end if
Next
'WshNetwork.SetDefaultPrinter("Fax")
Msgbox("Called WshNetwork.SetDefaultPrinter(" & strPrinter & ")")
WScript.Echo GetDefaultPrinter
Function GetDefaultPrinter
sComputer = "."
Set oWMIService = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
Set colItems = oWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each oItem in colItems
If (oItem.Attributes And 2^(3-1)) = 4 Then
sDefault = oItem.Name
Exit For
End If
Next
GetDefaultPrinter = sDefault
End Function
Damit kann ich den Standarddrucker vor und nach dem Versuch, ihn zu ändern, überprüfen. Die Schleife scheint geholfen zu haben, hat das Problem aber nicht vollständig gelöst. Manchmal ist der neue Drucker richtig eingestellt, manchmal kann ich mich ab- und wieder anmelden und es kann nicht derselbe Standarddrucker eingestellt werden. Zur Klarstellung: Ich binnichtein Vollzeitadministrator. Ist diese Technik veraltet? Sollte ich etwas anderes verwenden, um den Standarddrucker festzulegen?
Bearbeiten: Zusätzlich müssen wir uns den Standarddrucker merken, den der Benutzer möglicherweise während seiner Benutzersitzung festgelegt oder geändert hat, und diesen Drucker dann als Standard festlegen
Antwort1
Da Sie Server 2008 und Windows 7 haben, können Sie über die Gruppenrichtlinieneinstellungen einen Standarddrucker festlegen. Wir verwenden dies derzeit, um Standarddrucker in unseren Computerlaboren festzulegen. Dazu müssen Sie zwar eine Gruppenrichtlinie für diese Container erstellen, aber Sie können damit ziemlich detailliert vorgehen.
Im Gruppenrichtlinien-Editor befindet sich die Richtlinie unter ...
Benutzerkonfiguration -> Einstellungen -> Systemsteuerungseinstellungen -> Drucker
Fügen Sie dort Drucker hinzu. Eines der Kontrollkästchen ist „Als Standarddrucker festlegen“. Es funktioniert wirklich.
Antwort2
Anstatt das Netzwerkobjekt zu verwenden, führe ich den Befehl direkt aus: rundll32 printui.dll,PrintUIEntry /y /n "" scheint einwandfrei zu funktionieren