【发布时间】:2011-12-01 21:47:04
【问题描述】:
我正在尝试在 C# 中创建一个方法来清空打印队列中的所有项目。以下是我的代码:
LocalPrintServer localPrintServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministratePrinter);
PrintQueue printQueue = localPrintServer.GetPrintQueue(printerName);
if (printQueue.NumberOfJobs > 0)
{
printQueue.Purge();
}
当此代码运行时,在 localPrintServer 构造函数中,应用程序会抛出此错误: “创建 PrintServer 对象时发生异常。Win32 错误:访问被拒绝。”
该构造函数有一些重载(包括不发送参数)。尝试其中任何一个,我都会越过那条线,但是当我到达 printQueue.Purge() 调用时,我会收到与上面列出的相同的访问被拒绝消息。
寻找有关如何/我可以做些什么来解决这个问题的建议。我可以从我的计算机中手动删除打印作业。我不确定应用程序是否以与我相同的访问权限运行,也不确定如何检查。
【问题讨论】:
-
您是否尝试过以管理员身份运行您的流程/视觉工作室?
-
我将 Visual Studio 的 EXE 设置为始终以管理员身份运行,重新启动 Visual Studio 2010 并再次尝试。仍然收到相同的访问被拒绝错误。
-
尝试右键单击输出的 .exe 文件 (YourProgramName.exe) 并选择以管理员身份运行。
-
您的用户帐户没有足够的权限。开始,打印机+设备,右键单击打印机,打印机属性,安全选项卡。在 superuser.com 上询问有关它的更多问题
-
这个问题解决了吗?我遇到了同样的问题。
标签: c# access-denied printqueue