Hallo,
ich möchte über ein VBS-Script unter bestimmten Bedingungen Druckaufträge aus der printer queue löschen. Wenn ich bei dem gewünschten Objekt vom Typ Win32_Printer die Methode CancelAllJobs aufrufe, erhalte ich den Rückgabewert 5 (=access denied). Was muss ich tun, um den Druckauftrag löschen zu können? Hatte den Druckauftrag schließlich unter demselben Benutzerkonto erteilt...
Auch wenn ich die Aufträge über das Script PRNQCTL.vbs (standardmäßig bei WinXP dabei) zu löschen versuche, misslingt das:
--schnipp--
I:\\>cscript %windir%/system32/PRNQCTL.vbs -x -p "EPSON Stylus COLOR 760"
Microsoft (R) Windows Script Host, Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.
Fehlgeschlagen Löschen Win32-Fehlercode 5
--schnapp--
Hier der Quellcode meines Scripts:
--schnipp--
Option Explicit
Dim objWmi
Dim objW32Printr
Dim objPrintr
Dim rc
Set objWmi = GetObject("WinMgmts:")
Set objW32Printr = objWmi.InstancesOf("Win32_Printer")
For each objPrintr in objW32Printr
If (MsgBox( "Name: " & objPrintr.Name & vbCRLF &_
"Default: " & objPrintr.Default & vbCRLF &_
"Description: " & objPrintr.Description & vbCRLF &_
"Status: " & objPrintr.Status & vbCRLF &_
"StatusInfo: " & objPrintr.StatusInfo & vbCRLF &_
"PrinterStatus: " & objPrintr.PrinterStatus & vbCRLF &_
"ConfigManagerErrorCode: " & objPrintr.ConfigManagerErrorCode & vbCRLF &_
"DetectedErrorState: " & objPrintr.DetectedErrorState & vbCRLF &_
"ErrorDescription: " & objPrintr.ErrorDescription & vbCRLF &_
"ErrorInformation: " & objPrintr.ErrorInformation & vbCRLF &_
"ExtendedDetectedErrorState: " & objPrintr.ExtendedDetectedErrorState & vbCRLF &_
"ExtendedPrinterStatus: " & objPrintr.ExtendedPrinterStatus & vbCRLF &_
"LastErrorCode: " & objPrintr.LastErrorCode & vbCRLF &_
"Availability: " & objPrintr.Availability & vbCRLF & vbCRLF &_
"Alle Jobs beibehalten?" , vbYesNo + vbQuestion, "Drucker") = vbNo) Then
rc = objPrintr.CancelAllJobs()
Wscript.Echo "returnCode: " & rc
End If
Next
--schnapp--
Danke für eure Hilfe!
Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge
rc = objPrintr.CancelAllJobs()
Hast Du oben nicht ein objW32Printr definiert und arbeitest dann beim Cancel-Befehl ohne W32?
Hast Du oben nicht ein objW32Printr definiert und arbeitest dann beim Cancel-Befehl ohne W32?