Windows — C ++ Изменить владельца очереди печати

Я хочу знать, можно ли изменить имя «Владелец», которое отображается при вызове очереди печати для просмотра документов принтера в очереди. У меня есть служба Windows, которая получает документ от пользователя и отправляет ему принтер Windows, а владельцем всегда является имя пользователя, который вошел на рабочую станцию, на которой работает служба. Я хотел бы изменить «владельца» на что-то другое, и это будет сделано в C ++ Windows DLL, которую служба Windows загружает и использует.

Добавлено 8/30/16 @ 9: 14 утра по восточному времени

Спасибо за предложение, Томас. Я должен был упомянуть мое исследование, но оно было длинным и пустым. MSDN имеет функцию SetJob, которая может принимать 1 из 4 структур (pJob = JOB_INFO_1… JOB_INFO_4). JOB_INFO_1, 2 и 4 имеют LPSTR pUserName, который, по-видимому, может использоваться для изменения владельца задания на печать (Владелец?). Однако в разделе замечаний SetJob говорится:
«Следующие члены структуры JOB_INFO_1, JOB_INFO_2 или JOB_INFO_4 игнорируются при вызове SetJob: JobId, pPrinterName, pMachineName, pUserName, pDrivername, Size, Submitted, Time и TotalPages».

И JOB_INFO_3 не имеет этого поля в нем. Ницца.

Я не видел никаких других функций, которые могли бы сделать это. Можете ли вы указать мне что-то конкретное, что я могу исследовать больше? Или это, как известно, работает? Благодарю.

1

Решение

Я не уверен, почему MSDN говорит, что эти поля игнорируются. Я изменяю pUserName, pDocument, pStatus, используя SetJob с JOB_INFO_1, и он работает отлично.
Просто убедитесь, что для Position задано значение JOB_POSITION_UNSPECIFIED.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]