将打印文档的真实用户获取到 IPP 打印机

Posted

技术标签:

【中文标题】将打印文档的真实用户获取到 IPP 打印机【英文标题】:Getting the real user who printed a document to an IPP printer 【发布时间】:2012-03-31 17:12:53 【问题描述】:

目前,我正在尝试以编程方式获取开始打印作业的用户的名称到映射的IPP printer。

我正在为 JOB_INFO_2 structure 的成员 pUserName 包含用于连接 IPP 打印机的用户名而不是启动的用户这一事实而苦苦挣扎本地打印作业。

举例说明:

同时查看Microsoft's PrintMon tool 和打印机队列,它们都显示相同:

他们将“uwe_keim”显示为所有者用户,尽管另一个用户开始了打印作业。

这似乎来自用于对 IPP 打印机进行身份验证的用户的连接凭据:

我真的不知道如何/是否有机会获得开始打印作业的实际用户(我需要在多用户终端环境中运行的应用程序)。

总结一下我的问题:

如何获取开始打印作业的用户名? (与拥有打印作业的用户的名称相反)

【问题讨论】:

致选民结束:在我看来,这是一个编程问题,尽管屏幕截图来自最终用户应用程序。我想知道要调用哪些函数/方法来获取用户。 请注意,在您的视野之外,另一端的任何人都可以完全控制该机器。他们可能会谎报是谁在打印。 我假设所有用户都使用相同打印机的通用打印服务器帐户进行相同的打印机设置。看起来 PrintMon 只能访问 ipp 身份验证数据。所以我想你的设置应该改变。每个用户都应在 ipp 打印服务器级别分别进行身份验证。然后你应该得到不同的用户名。 【参考方案1】:

查看pNotifyName字段。

【讨论】:

谢谢,我刚试过这个。不幸的是,在我的场景中,这个值总是NULL

以上是关于将打印文档的真实用户获取到 IPP 打印机的主要内容,如果未能解决你的问题,请参考以下文章

隔空打印 ipp lpd区别

Node.js:如何将打印作业添加到打印机

Node.js 互联网打印协议 (IPP) API Oauth2 授权

将 PrintDialog 拦截到 XPS 文档编写器

Windows 中的 Java 文档打印

python调用打印机实现打印文档