从Print Spooler API获取打印作业的用户域名

时间:2013-07-30 18:22:39

标签: c# .net winapi print-spooler-api

如何根据打印的作业ID获取进行打印的用户的域名?

我可以从例如GetJob检索到的JOB_INFO_2中获取用户名,但JOB_INFO_#结构中没有一个包含用户的域名。

我可以使用IPGlobalProperties.GetIPGlobalProperties().DomainName获取打印服务器的域名,但这可能与用户的域名不同,因此它不是一个可靠的解决方案。

2 个答案:

答案 0 :(得分:1)

我不确定,但我发现用户名可能包含用户的域名(有些名称@ domain),也许这只会在用户打印到另一个域的打印机时发生。可能值得编写一些代码并进行检查。

答案 1 :(得分:1)

尝试使用UserPrincipal.FindByIdentity(PrincipalContext, IdentityType, String)按用户名查找用户。找到用户后,使用该UserPrincipal的Context属性获取域。

您需要添加对System.DirectoryServices.AccountManagement的引用。