为什么16位DOS程序不能打印到networking共享

我有一个DOS应用程序(在terminal服务上运行,Win Server 2008 Standard 6.06002 SP2)。 我需要打印到我的计算机上的共享打印机。 net use lpt2: \\mycomputer\myprn 。 当我“复制file.txt lpt2”,它完美的作品。 当我的应用程序打印,它显示打印机没有find。 DOS应用程序指向lpt2并使用hppcl。 当DOS应用程序驻留在我的机器(Win7x32)上时,我能够打印到自己的打印机。 任何线索?

老兄,对不起。 去过也做过。

当您使用net use时,打印机是否显示?

我能够在学生实验室中使用net use lpt2 \\servername\printer打印出可怕的16位DOS程序。 我也得到一个可怕的程序,不接受jetdirect / TCPIP打印机端口,但确实接受networking共享打印共享打印机为\\127.0.0.1\printername$和打印到。 换句话说:确保打印机实际上出现net use ,确保本地打印机是共享的 (只有本地用户,除非你真的想分享它超出了可怕的16位程序的范围,如果你用$命名它将会被隐藏),如果你必须使用\\127.0.0.1作为服务器。

祝你好运!

太多人混淆“字符”或“控制台”模式应用程序的“DOS”。 如果您在Server 2008R2上运行“DOS”应用程序,则您可能拥有的是32位字符应用程序。

如果它是一个16位的DOS应用程序,你将无法在64位的Server2008R2上运行它,它唯一知道如何处理16位应用程序是抛出一个错误。

现在,如果这个应用程序试图使用16位打印例程,坏消息是它不能工作,至less在应用程序在Server 2008R2上运行时是不行的。

我实际上有一个类似的设置,因为某些制造软件…

通常的罪魁祸首是应用程序期望打印机在本地计算机的列表中。 另一个罪魁祸首是,应用程序期望打印机是一个非常具体的名称,否则它不会find它。 在不知道软件的情况下,很难确切地说出问题所在,但是我会先将共享打印机添加到您的TS服务器,并将其命名为它在本地计算机上的名称,然后尝试使用lpt端口设置进行打印。

我可以build议一个替代scheme,我们使用从我公司广泛使用的16位DOS程序进行打印:AND Technologies免费DOSPrint应用程序在过去的十年里为我们完美地工作。 虽然封闭的来源,它只有63KB,作为系统范围的服务或每用户托盘应用程序运行,将DOS子系统的LPTstreamredirect到任何Windows打印队列,包括共享打印机,并拥有自由的许可证(“免费的一般用途没有限制“)。 检查他们的下载/免费软件链接。

另一种select – 如果你有任何编程经验 – 就是写你自己的普通的LPT到任何redirect器。 在.NET中,您将使用对QueryDosDevice和DefineDosDevice的P / Invoke调用,将LPT从任何DOS应用程序redirect到文件或命名pipe道:

 <DllImport("kernel.dll", CharSet:=CharSet.Unicode, entrypoint:="DefineDosDeviceW")> Public Shared Function DefineDosDevice(ByVal dwFlags As UInt32, ByVal lpDeviceName As String, ByVal lpTargetPath As String) As Boolean End Function