2016-09-29 107 views
7

Bir ağ yazıcısına koddan yazdırmaya çalışıyorum ancak yazdırma iletişim kutusundaki ağ yazıcısı durumu Access denied, unable to connect ve yazdırma düğmesi devre dışı bırakılıyor. Ancak başka bir uygulamadan yazdırdığımda bu yazıcıya baskı yapabilirim. Ve, baskı iletişim kutusundan PDF'ye Yazdır'ı seçtiğimde, bu da iyi çalışıyor. Ağ yazıcısına yazdıramıyorum. Bir çeşit izin sorunum mu var?PrintDialog'da ağ yazıcısına erişim reddedildi

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

Uygulamanızın çalışmayı denediği içeriği kontrol edebilirsiniz. Yazdırmaya izin vermeyen bir ayrıcalık altında çalışmayı seçerseniz uygulama içeriğini taklit edebilirsiniz. – Nair

+0

Uygulamanızı yönetici olarak çalıştırmayı deneyin. – Hozikimaru

+0

Bu hatayı programın yapısından veya Debug'dan mı alıyorsunuz? – Hank

cevap

-1

Henüz yorum yapamıyorum, ancak sorununuzla ilgili düşüncelerimi paylaşmak istedim.

Ağ sürücülerime uygulamalardan erişirken sorun yaşadım. Yönetici olarak çalışırken bile. Yazıcılara benzer şekilde erişildiğini düşünüyorum.

Sorunum, Kullanıcı Hesabı denetimi (UAC) ile yapıldı.

buna göre bir kayıt ayarlamayı deneyin: Windows 10 and network drive

0

Paylaşılan ağ yazıcısı bulmak ve

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

Umut kendisine yazdırmak için yazdırma diyalog başlatmasını sonra bu kod parçası eklemek gerekir o

yardımcı olur
+0

Statik bir yazıcıya sahip olamıyorum. Her kullanıcının farklı bir ağ yazıcısı var. – Arm0geddon

+0

Statik yazıcınız bulunamayacağından bahsetmeliydin. Her kullanıcının hangi senaryoda farklı bir ağ yazıcısı var. Böyle bir durumda, oturum açmış olan kullanıcının ağ yazıcısını listelemek için wmi sorgusuna ihtiyaç duyarsınız ve ardından wpf uygulamanızda bunu seçin. Bunu izleyin https://blogs.technet.microsoft.com/heyscriptingguy/2007/07/17/how-can-i-list-the-network-printers-for-the-logged-on-user/ Umarım yardımcı olur –