尝试移除打印机时拒绝访问

The*_*ple 1 python printing pywin32 pycharm

def on_printer_button_clicked(self, button):
    for i in range(len(self.printer_buttons)):
        if button == self.printer_buttons[i]:
            pHandle = win32print.OpenPrinter(self.printers[i]['pPrinterName'])
    win32print.DeletePrinter(pHandle)
    return
Run Code Online (Sandbox Code Playgroud)

所以我所做的就是打开打印机句柄并调用函数删除打印机,如您所见。这是我在运行该函数时在控制台中得到的信息:

uninstall_windowGUI.py", line 57, in on_printer_button_clicked
win32print.DeletePrinter(pHandle)
pywintypes.error: (5, 'DeletePrinter', 'Access is denied.')
Run Code Online (Sandbox Code Playgroud)

我试过运行 IDE(管理员模式下的 Pycharm,但仍然遇到同样的问题。关于如何继续前进的任何想法?在我弄清楚之前我有点卡住了。(另外:我正在使用 Gtk 和Gdk 创建接口,如果这有区别的话。)

Jus*_*nen 5

文档指出必须为 PRINTER_ACCESS_ADMINISTER 打开打印机句柄。像这样的事情可能会奏效:

PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ACCESS_ADMINISTER} 
win32print.OpenPrinter(self.printers[i]['pPrinterName'], PRINTER_DEFAULTS)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这帮助了很多。我实际上不得不将 PRINTER_ACCESS_ADMINISTER 替换为 PRINTER_ALL_ACCESS,因为无论出于何种原因,我仍然收到“拒绝访问”。 (2认同)