Java 访问拒绝打印到 Windows 7 上的收据打印机

标签 java printing windows-7 filenotfoundexception access-denied

大约 11 年前,我开发了一个 Java POS 系统,目前仍在 Windows XP 和 Vista 机器上运行。我正在将它们更新到 Windows 7,现在在 Star Micronics 热敏收据打印机上打印时遇到问题。

这是在 Windows XP 和 Vista 机器上访问网络上其他机器上的共享打印机时运行良好的代码行,但我得到一个 java.io.FileNotFoundException(拒绝访问) 当我尝试在连接到 Windows 7 盒子的打印机上打印时。

FileOutputStream fos = new FileOutputStream("\\\\machine1\\printer");

现在在这种情况下,machine2(无论是 Windows XP、Vista 还是 7)正尝试通过我的 Java 程序在 machine1 (Windows 7) 连接的收据打印机上打印。如果我尝试从 machine1 上的 machine2 的记事本打印普通文本文件,它工作正常。只有通过我在上面提到的行上的 Java 才会失败。如果 machine1 和 machine2 是 Windows XP 或 Vista,则没有问题,并且已经工作了 11 年。

我相信这一定是 Windows 7 的权限问题,但我不确定它是什么。请记住,第二台机器可以看到 Windows 7 机器上的打印机,甚至可以在上面打印。只有通过我的 java 程序才能失败。我可以尝试重写有关打印方式的旧代码,但我担心会遇到类似的问题。

有什么建议吗?

最佳答案

我今天遇到了同样的问题,在升级到拥有 Windows XP 计算机且可以打印的人之后,升级到 Windows 7 计算机。我什至无法“回显测试 >\machine1\GenericT”,得到拒绝访问。

我发现您需要为位于“C:\Windows\System32\spool\PRINTERS”中的打印机文件夹提供安全访问权限,您应该添加“Everyone”并对其进行修改。这是你将能够打印没问题。

关于Java 访问拒绝打印到 Windows 7 上的收据打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097644/

相关文章:

java - 使用 Eclipse 自动添加 OpenGL 导入

input - 打印从标准输入读取的字符串时如何忽略换行符?

c - 我在程序中找不到任何错误,但它没有给出所需的输出

delphi - 是否有适用于 Windows 7 的预览处理程序 VCL?

sql - 什么是对 SQLite 数据库(仅模式)进行版本控制的好方法(或工具)?

excel - 如何在 Windows 7 中从命令行激活 Excel 加载项?

java - 在 Spring Boot 中使用 @TestPropertySource 覆盖 @PropertySource

java - @ConditionalOnExpression 如果属性存在

java - 在 Java 中安排特定时间的事情?

powershell - winspool.drv的openprinter无法正常工作