我有一个我正在处理的应用程序,我允许用户在从应用程序打印表单时选择要用作打印机的打印机。我正在使用.NET 2.0
在设置屏幕中,我拨打
System.Drawing.Printing.PrinterSettings.InstalledPrinters
获取可用打印机列表。
在客户端的计算机上,该属性抛出异常:
System.ComponentModel.Win32Exception: The RPC server is unavailable
客户端报告窗口将其打印机显示为“就绪”,客户端可以从打印机打印测试页。但是,我无法在本地重现这个问题,而且我的想法已经不多了。有没有人有什么想法会导致这个问题?任何想法或方向都会有所帮助。感谢
答案 0 :(得分:5)
在Windows 7中也发生了同样的事情。在服务中停止并启动打印假脱机程序会一直修复,直到再次发生。
以下命令可以快速执行此操作:
net stop "print spooler"
net start "print spooler"
注意:以Admin身份运行命令提示符。我制作了一个批处理文件,因为它在开发过程中每天发生4-5次。
答案 1 :(得分:2)
如果可以打印,很可能是安全问题。否则我会投票给“假脱机程序服务”,但更有可能你的应用程序没有与假脱机程序服务进行通信的权利......
答案 2 :(得分:1)
RPC服务已关闭或Windows防火墙阻止它。
答案 3 :(得分:1)
我使用PrinterSettings.InstalledPrinters遇到了类似的问题 原因是应用程序以“部分信任”权限运行。
在Visual Studio中,转到Project Properties \ Security并选择“This is a full trust application”。
我不确定这是否会对你有所帮助,但对我来说是这样。
答案 4 :(得分:0)
这与网络打印机有什么关系吗? RPC是远程过程调用,也许这用于检测已安装的网络打印机?
在谷歌上搜索错误之后:
InstalledPrinters使用WMI查找打印机。 WMI轮流使用RPC。
让WMI返回您的类型的错误可能意味着以下内容:
对您的问题有用WMI resource。
答案 5 :(得分:0)
另一种可能性是PrintSpooler服务已设置为已禁用