2016-09-29 11 views
7

コードからネットワークプリンタに印刷しようとしていますが、印刷ダイアログボックスのネットワークプリンタのステータスがAccess denied, unable to connectで、印刷ボタンが無効です。しかし、私は別のアプリケーションから印刷するだけで、そのプリンタにうまく印刷できます。また、印刷ダイアログからPDFに印刷を選択すると、それも正常に機能します。私はネットワークプリンタに印刷できません。私は何らかのパーミッションの問題がありますか?PrintDialogでネットワークプリンタへのアクセスが拒否されました

if (File.Exists(previewDocument)) 
    File.Delete(previewDocument); 

PrintDialog printD = new PrintDialog(); 
printD.PageRangeSelection = PageRangeSelection.AllPages; 
printD.UserPageRangeEnabled = true; 

if (printD.ShowDialog() ?? false) 
{ 
    XpsDocument xpsDoc = new XpsDocument(previewDocument, FileAccess.ReadWrite); 
    XpsDocumentWriter xpsWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc); 
    xpsWriter.Write(((IDocumentPaginatorSource)messageFlow).DocumentPaginator); 

    FixedDocumentSequence fixedDocSeq = xpsDoc.GetFixedDocumentSequence(); 
    printD.PrintDocument(fixedDocSeq.DocumentPaginator, "Hello!"); 
} 
+0

アプリケーションが実行しようとしているコンテキストをよく確認できます。アプリケーションが印刷を許可しない権限で実行されている場合、アプリケーションコンテキストを偽装することがあります。 – Nair

+0

アプリケーションを管理者として実行してください。 – Hozikimaru

+0

このエラーは、プログラムのビルドまたはデバッグから取得していますか? – Hank

答えて

-1

私はまだコメントできませんが、あなたの問題について私の考えを伝えたいと思います。

アプリケーションからネットワークドライブにアクセスする際に問題が発生しました。 Adminとして実行している場合でも。私はプリンタが同様の方法でアクセスされていると思っています。

私の問題はユーザーアカウント制御(UAC)でした。

これに応じてレジスタを設定してみてください:Windows 10 and network drive

0

あなたは

printD.PrintQueue = New PrintQueue(New PrintServer(@"\\computer server name"), "the exact name of your network printer") 

を共有ネットワークプリンタを見つけるためにあなたの印刷ダイアログをインスタンス化した後に、このコードの断片を追加し、それを印刷する必要があり、それは

を役に立てば幸い
+0

私は静的なプリンタを持つことができません。すべてのユーザーが異なるネットワークプリンタを使用しています。 – Arm0geddon

+0

静的なプリンタを使用することはできません。どんなシナリオでは、すべてのユーザーが別のネットワークプリンタを持っていますか。 この場合、ログオンしたユーザーのネットワークプリンタを一覧表示し、wpfアプリケーションでそのプリンタを選択するには、wmi queryが必要です。 これに続いて https://blogs.technet.microsoft.com/heyscriptingguy/2007/07/17/how-can-i-list-the-network-printers-for-the-logged-on-user/ 希望する –

関連する問題