PrintTestPage с C # в Windows Vista - PullRequest
1 голос
/ 26 мая 2009

У меня очень странная проблема при печати тестовой страницы после установки принтера в сети. Это все работает очень хорошо, и при запуске кода от имени администратора ... тестовая страница также печатается. Но когда я запускаю программу "нормально", я получаю "Доступ запрещен".

Так вот код:

// get the printer
string path = "Win32_Printer.DeviceId='" + printerName + "'";
using (ManagementObject printer = new ManagementObject(path))
{
    // invoke the method
    object obj = printer.InvokeMethod("PrintTestPage", null);
    System.Windows.Forms.MessageBox.Show(obj.ToString());
}

obj всегда 5, что означает «Доступ запрещен».

Когда я вызываю метод "SetDefaultPrinter" таким же образом, все в порядке как для администратора, так и нет.

Надеюсь, у кого-нибудь есть подсказка.

Спасибо, Simon

1 Ответ

1 голос
/ 04 июня 2009

Решил это. Я нашел другой кусок кода, который делает то же самое и работает в обоих контекстах.

WshShell shell = new WshShell (); string command = "RUNDLL32 PRINTUI.DLL, PrintUIEntry / k / n \" "+ printerInfo.PrinterName +" \ ""; объект windowStyle = null; объект waitOnReturn = null; shell.Run (команда, ref windowStyle, ref waitOnReturn);

Вот и все. В любом случае, спасибо.

Ура, Simon

...