gpt4 book ai didi

windows - 如何找出哪个用户以编程方式将打印命令发送到 windows/windows 服务器?

转载 作者:可可西里 更新时间:2023-11-01 11:40:32 27 4
gpt4 key购买 nike

我有一个 Windows 网络 (peer-2-peer) 以及 Active Directory,我需要记录向服务器发送任何类型打印的用户的名称。我想编写一个程序来记录他们的用户名和/或他们各自的 IP,我熟悉 c#.net 和 c++,但我没有找到任何关于如何解决我的问题的线索。

有没有什么方法可以借助 WMI 来捕捉他们的名字,或者应该用 API 弄脏我的手(但我不知道哪个 API)?

问候。

最佳答案

这些功能在 Spooler API 下公开.

EnumJobs将枚举给定打印机的所有当前作业。它将返回 JOB_INFO_1结构,其中包括与给定打印作业关联的用户名:

typedef struct _JOB_INFO_1 {
DWORD JobId;
LPTSTR pPrinterName;
LPTSTR pMachineName;
LPTSTR pUserName;
LPTSTR pDocument;
LPTSTR pDatatype;
LPTSTR pStatus;
DWORD Status;
DWORD Priority;
DWORD Position;
DWORD TotalPages;
DWORD PagesPrinted;
SYSTEMTIME Submitted;
}JOB_INFO_1, *PJOB_INFO_1;

如果您更喜欢 WMI,可以将 wmic.exe/node 开关(或您喜欢的变体)和 Win32_PrintJob 一起使用类(class)。大致:

c:\> wmic /node 10.0.0.1 
wmic> SELECT * FROM Win32_PrintJob

...将返回一个结构,其中包含所选服务器的所有打印作业信息。您可以根据需要使用 WHERE 子句进行过滤。

关于windows - 如何找出哪个用户以编程方式将打印命令发送到 windows/windows 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com