Отказ в доступе при вызове метода PrintQueue.Pause() в C#.net

Я пытаюсь приостановить очередь печати Windows 7 с помощью C#.NET visual studio 2008. У меня есть полные права администратора, но когда я запускаю следующий код для приостановки очереди, он говорит, что доступ запрещен. Пожалуйста, помогите мне.

        LocalPrintServer lps = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer);
        //PrintServer lps = new PrintServer("\\\\NOTEBOOK-CI3", PrintSystemDesiredAccess.AdministratePrinter);
        lps.Commit();
        PrintQueue queue = lps.GetPrintQueue(listBox1.SelectedItem.ToString());
        if (!queue.IsPaused)
            queue.Pause();

        queue.Commit();
        lps.Commit();

3 ответа

У меня была такая же проблема, поэтому для меня это было лучшее решение:

PrintS = new PrintServer();
PrintQ = new PrintQueue(PrintS, PrinterName, PrintSystemDesiredAccess.AdministratePrinter);
PrintQ.Pause();

Протестировано с локальным PDF-принтером

Я не уверен, но вы пытались изменить LocalPrinterServer в PrinterServer? Взгляните на http://www.visualbasicask.com/visual-basic-language/printqueuepause.shtml.
У него была точно такая же проблема, и он мог решить ее, используя PrintSystemDesiredAccess.AdministrateServer (который вы используете). Разница лишь в том, что вы используете LocalPrinterServer вместо PrinterServer,

Вы работаете на своем сайте как 4.0? Я столкнулся с проблемами, когда мы обновили наш сайт с 3.5 до 4.0 Framework. Функциональность "Очистка печати" перестала работать в 4.0 Framework. В конечном итоге я закончил тем, что создал веб-сервис, в котором использовалась платформа 3.5 и веб-сайт 4.0 сообщал о принтере, который он хотел удалить, в веб-сервис 3.5.

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

Другие вопросы по тегам