C ++更改打印队列所有者

时间:2016-08-29 19:19:50

标签: c++ windows owner printqueue

我想知道是否可以更改在打开打印队列以查看排队的打印机文档时可见的“所有者”名称。我有一个Windows服务,它接收来自用户的文档并将其发送到Windows打印机,并且所有者始终是登录到运行服务的工作站的用户的名称。我想将“所有者”更改为其他内容,这将在Windows服务加载和使用的C ++ Windows DLL中完成。

在美国东部时间上午9点14分8/30/16添加

感谢Thomas的建议。我应该提到我的研究,但它很长而且空洞。 MSDN有一个SetJob函数,可以使用4个结构中的1个(pJob = JOB_INFO_1 ... JOB_INFO_4)。 JOB_INFO_1,2和4有一个LPSTR pUserName,它似乎可用于更改打印作业的所有者(所有者?)。但是,在SetJob的备注部分中,它说: “在调用SetJob时,将忽略JOB_INFO_1,JOB_INFO_2或JOB_INFO_4结构的以下成员:JobId,pPrinterName,pMachineName,pUserName,pDrivername,Size,Submitted,Time和TotalPages。”

并且JOB_INFO_3中没有此字段。好的。

我没有看到任何可能做到这一点的其他功能。你能指点一些我可以研究更具特色的东西吗?或者知道有用吗?感谢。

1 个答案:

答案 0 :(得分:2)

我不确定为什么MSDN会忽略这些字段。我使用带有JOB_INFO_1的SetJob更改pUserName,pDocument,pStatus,它完美地运行。 只需确保将Position设置为JOB_POSITION_UNSPECIFIED。