印刷キュー内のすべての項目を空にするメソッドを C# で作成しようとしています。以下は私のコードです:
LocalPrintServer localPrintServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministratePrinter);
PrintQueue printQueue = localPrintServer.GetPrintQueue(printerName);
if (printQueue.NumberOfJobs > 0)
{
printQueue.Purge();
}
このコードが localPrintServer コンストラクターで実行されると、アプリは次のエラーをスローします。「PrintServer オブジェクトの作成中に例外が発生しました。Win32 エラー: アクセスが拒否されました。」
そのコンストラクターには、いくつかのオーバーロードがあります (パラメーターを送信しないなど)。それらのいずれかを試してみると、その行を通り過ぎますが、printQueue.Purge() 呼び出しに到達すると、上記と同じアクセス拒否メッセージが表示されます。
これを回避するためにどのように/何ができるかの提案を探しています。コンピューターから印刷ジョブを手動で削除できます。アプリが私が持っているのと同じアクセス権で実行されるかどうか、またそれを確認する方法がわかりません。