我想知道是否可以更改调出打印队列以查看排队的打印机文档时可见的“所有者”名称。我有一个 Windows 服务,它从用户那里接收文档并将其发送给 Windows 打印机,并且所有者始终是登录到运行该服务的工作站的用户的名称。我想将“所有者”更改为其他内容,这将在 Windows 服务加载和使用的 C++ Windows DLL 中完成。
添加 8/30/16@9:14am ET
谢谢你的建议,托马斯。我应该提到我的研究,但它又长又空。 MSDN 有一个 SetJob 函数,它可以采用 4 种结构中的一种(pJob = JOB_INFO_1…JOB_INFO_4)。 JOB_INFO_1、2 和 4 有一个 LPSTR pUserName,它似乎可以用来更改打印作业的所有者(Owner?)。但是,在 SetJob 的备注部分中说: “在调用 SetJob 时忽略 JOB_INFO_1、JOB_INFO_2 或 JOB_INFO_4 结构的以下成员:JobId、pPrinterName、pMachineName、pUserName、pDrivername、Size、Submitted、Time 和 TotalPages。”
而 JOB_INFO_3 中没有这个字段。不错。
我没有看到任何其他功能可以做到这一点。你能指出我可以研究更多的具体内容吗?或者那是已知的工作?谢谢。
最佳答案
我不确定为什么 MSDN 说这些字段被忽略了。我使用 SetJob 和 JOB_INFO_1 更改了 pUserName、pDocument、pStatus,它运行良好。 请务必将 Position 设置为 JOB_POSITION_UNSPECIFIED。
关于C++ 更改打印队列所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39213608/