Java windows 10中未返回默认打印机
我已将windows环境从8更新到10,发现没有返回默认打印机,而是返回了另一台打印机 我已关闭“让windows管理我的默认打印机”设置,但仍无法获取默认打印机 我有以下代码:Java windows 10中未返回默认打印机,java,printing,java-8,windows-10,Java,Printing,Java 8,Windows 10,我已将windows环境从8更新到10,发现没有返回默认打印机,而是返回了另一台打印机 我已关闭“让windows管理我的默认打印机”设置,但仍无法获取默认打印机 我有以下代码: private void testPrinter() { PrintService[] array = PrintServiceLookup.lookupPrintServices(null, null); for(PrintService ps : array){ System.ou
private void testPrinter() {
PrintService[] array = PrintServiceLookup.lookupPrintServices(null, null);
for(PrintService ps : array){
System.out.println(ps.getName());
}
}
在这个测试中,我得到了如下打印机列表:
- 寄一张纸条
- Microsoft XPS文档编写器
- HP打印机
- Epson打印机(在windows中设置为我的默认打印机)
PrintService ps = PrintServiceLookup.lookupDefaultPrintService();
System.out.println(ps.getName());
我得到了HP打印机,它不是我的默认打印机!!!无论我选择哪台打印机作为默认打印机,HP打印机始终返回
我查看了lookupDefaultPrintService方法的java API,它显示了以下内容:
查找此环境的默认打印服务。今年五月
返回null。如果多个查找服务各自指定默认值,则
所选服务没有精确定义,而是一个本机平台
服务,而不是已安装的服务,通常作为
违约如果没有可明确识别的平台本机默认值
打印服务,默认为位于
依赖于实现的方式
这可能包括使用任何可用的首选项API
作为Java或本机平台的一部分。这个算法可能是
由设置属性javax.print.defaultPrinter的用户覆盖。
指定的服务必须被发现为有效且当前有效
可作为默认值返回
在windows 8中,返回默认打印机没有问题。更新之后,我遇到了这个问题。如何解决此问题?如本文所述,Windows 10会在每次打印时重新配置默认打印机,将默认设置为最后使用的设备。您必须更改此设置
编辑:您还可以尝试通过注册表(regedit.exe)直接禁用该功能,搜索所有LegacyDefaultPrinterMode DWORD
实例并将其设置为1(关闭)。通常主要实例如下:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
我已经关闭了“让windows管理我的默认打印机”功能,但即使如此,我仍然无法获得默认打印机!正如问题中所解释的那样。@Fared我已经用一个更激进的解决方案编辑了我的答案。@Matteo Baldi,也许你可以在以下方面提供帮助:谢谢