我在尝试在Windows 2008 Server中运行一堆旧的16位应用程序时遇到问题。 应用程序运行良好,直到Windows 2003 Server,但当我尝试从任何一个打印 它们都显示打印错误(无法创建打印机驱动程序/ TERM错误/等)
为了重现这种行为,我用C做了一个小测试程序(TCC 1.01 for DOS)。它运行正常 在XP / 2003 Server中,但是在2008 Server上它显示了句柄开放(5)但是在尝试时 写入该句柄,发出错误(写错误写入设备LPT1,中止,重试, 忽略,失败)
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
int main(void)
{
int handle, status;
char* sbuff;
handle = open("LPT1", O_WRONLY, S_IFBLK);
printf("%d\n", handle);
if (!handle)
{
printf("open failed\n");
exit(1);
}
sbuff = "[print test]\n";
write(handle, sbuff, strlen(sbuff));
close(handle);
getch();
return 0;
}
任何线索?
TIA, 巴勃罗
答案 0 :(得分:0)
Mike A - 我发现语法'print / d:{lpt?} {filename}'在Win2008上不起作用,而不是在16位应用程序或命令行中。多年来一直支持这种语法,我们在10台Win2003服务器上运行它。可能在Win2008中有一个配置设置,使其与以前版本的Windows语法兼容? BTW,这里是2012年4月更新的Microsoft Tech Bulletin,其中列出了与Win2008兼容的语法... http://technet.microsoft.com/en-us/library/cc731623。