几年前,另一个聪明的程序员建立了一个VB.NET服务,可以打印到服务器安装的打印机上。作业查询数据库表以查看是否有任何打印请求,这些请求指定要打印的文件以及要发送到的打印机的名称。作业构造一个由三部分组成的命令行咒语并执行它;有点像这样:
net use LPT2: IP_1.2.3.4 /user:domain\userid password >> netuse1.out
copy someExistingFile.pdf LPT2 >> copy.out
net use LPT2: /delete >> netuse2.out
我们被要求对这份工作做其他不相关的改变,我们很高兴地答应了。只有我们部署和运行的作业的任何版本都不会打印。第一条语句失败,出现“系统错误67”。找不到网络名称。“
作业已查询注册表以查找用户指定的打印机的端口名。它尝试的端口实际上就是我们在查看打印机属性时看到的端口“名称”。所以,嗯,没错。
除了…等等,“端口名”到底是什么?它不是有效的IP地址(尽管它是打印机本身的IP地址,前缀为“IP”)。我在网上找不到任何关于打印机端口的信息,只有计算机/共享[和可选卷]。
有人能解释一下这是否可行吗?
[当然,没有人能够向我们提供实际仍然有效的服务版本的源代码。我们没有涉及这部分服务,只涉及打印之前的内容。客户发誓他们也没有。Grrr…]