在Windows 7上使用Java打印小票机时出现访问被拒绝的错误

4
我大约11年前开发了一个Java POS系统,目前仍在Windows XP和Vista机器上运行。我正在将它们更新到Windows 7,但现在打印到Star Micronics热敏收据打印机时出现问题。
以下是代码行,当XP和Vista机器在网络上访问共享打印机时可以正常工作,但是当我尝试在连接到Windows 7框的打印机上打印时,会出现“java.io.FileNotFoundException(访问被拒绝)”的错误信息。
FileOutputStream fos = new FileOutputStream("\\\\machine1\\printer");

现在,在这种情况下,机器2(无论它是Windows XP、Vista还是7)试图通过我的Java程序在连接到机器1(Windows 7)的收据打印机上打印。如果我尝试从机器2上的记事本打印普通文本文件在机器1上可以正常工作。只有在上述行中使用我的Java时才会失败。再次说明,如果机器1和机器2都是Windows XP或Vista,则没有问题,这已经运行了11年。
我认为这必须是与Windows 7权限有关的问题,但我不确定具体是什么问题。请记住,第二台机器可以看到Windows 7机器上的打印机并打印。仅当使用我的Java程序时才会出现此问题。我可以尝试重写我的旧代码来打印,但我担心会遇到类似的问题。
有什么建议吗?
1个回答

1
今天我遇到了同样的问题,升级到Windows 7的人们之前使用Windows XP电脑可以正常打印。我甚至无法执行"echo test > \machine1\GenericT",显示拒绝访问。
我发现你需要为位于"C:\Windows\System32\spool\PRINTERS"的打印机文件夹提供安全访问权限,你应该添加"Everyone"并给予修改权限。这样你就能够顺利打印了。

在我的情况下,修改权限并不是必需的。写入权限就足够了。感谢您的答案,省去了我数小时的尝试。 - Abi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接