【问题标题】:Couldn't open Windows GDI printer driver无法打开 Windows GDI 打印机驱动程序
【发布时间】:2017-01-26 22:30:01
【问题描述】:

我安装了虚拟打印机,它通过重定向端口打印并通过 gsview\gsprint.exe 将文档发送到真实打印机。当我从普通 C++ 应用程序中使用 gsprint 时,它可以正常工作。但是,如果通过 Windows 服务调用相同的东西(以 SYSTEM 身份运行),则会出现以下错误。它可以看到打印机,但可能无法访问它。我在 Windows 10 上,但 Windows 7 也有同样的问题。我该如何解决这个问题?

2006-02-24 gsprint 1.9 无法打开 Windows GDI 打印机驱动程序 请求的打印机:“SupplyDep”

可用的打印机: “发送到 OneNote 2010” “虚拟打印机” “供应部” “Microsoft XPS 文档编写器” “传真”

【问题讨论】:

  • 感觉这个问题更适合Super User
  • 我个人会假设从 Windows 服务执行的进程没有用户打印权限。对源代码的快速阅读表明这可能是 OpenPriner() 返回 false 或 CreateDC() 返回 NULL 的结果。请注意,如果您想以这种方式使用它,这并不是真正打算用作某种打印服务器可能需要修改源代码并重建它。

标签: c++ windows printing ghostscript


【解决方案1】:

我在尝试以 NT 授权/系统用户身份运行 gsprint 时遇到了类似的问题。 link 的最后一篇文章帮助很大。基本上我在我的用户下设置了打印机,然后我将打印机的注册表项复制到了默认用户。

Below are the registry keys I copied from HKEY_CURRENT_USER to HKEY_USERS\.DEFAULT

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
    HKEY_CURRENT_USER\Printers

您需要重新启动 Print Spooler 服务(或只是重新启动服务器)才能使更改生效。

【讨论】:

    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 2013-01-20
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多