Войти

Показать полную графическую версию : Изменить владельца задания печати


Surround
25-08-2011, 19:08
Здравствуйте!
Есть консольное приложение на c#, исполняемое на сервере, которое отправляет на печать графические изображения. В сети используется AD. Возможно ли как-то изменить владельца задания печати, то есть печатать не из под системного пользователя сервера, а из-под какого-нибудь доменного юзера?
Печать документа делается через класс PrintDocument.

Delirium
26-08-2011, 07:19
Возможно ли как-то изменить владельца задания печати »
Создать задачу в планировщике и указать владельцем задания любого нужного пользователя, тогда задача будет запускаться от того имени, какое укажешь.

Либо, если задача запускается руками - правой кнопкой с зажатым Shift - запуск от имени другого пользователя.

Surround
26-08-2011, 09:03
печать осуществляется из программы следующим образом:
PrintDocument printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = "имя принтера";
printDocument.PrintPage += new PrintPageEventHandler(printDocument_PrintPage);
printDocument.Print();

событие printDocument_PrintPage подгружает в объект картинку, которая затем печатается. В очереди принтера задание выполняется от имени текущего пользователя, которое хотелось бы изменить.

Покопался, нашел способ обратится к свойствам очереди через объект ManagementObjectSearcher :
string query = "SELECT * FROM Win32_PrintJob";
using (ManagementObjectSearcher jobQuery = new ManagementObjectSearcher(query))
{
using (ManagementObjectCollection jobs = jobQuery.Get())
{

foreach (ManagementObject job in jobs)
{
Console.WriteLine(job["Document"]);
}
}
}

но опять-таки, это только чтение...




© OSzone.net 2001-2012