Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

WSH WMI Druckauftrag löschen "access denied"

nimmermann / 2 Antworten / Flachansicht Nickles

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!

bei Antwort benachrichtigen
REPI nimmermann „WSH WMI Druckauftrag löschen "access denied"“
Optionen
rc = objPrintr.CancelAllJobs()

Hast Du oben nicht ein objW32Printr definiert und arbeitest dann beim Cancel-Befehl ohne W32?
Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen