代码之家  ›  专栏  ›  技术社区  ›  PabloG

从Windows 2008服务器中的16位应用程序打印时出错

  •  0
  • PabloG  · 技术社区  · 14 年前

    在Windows2008服务器上运行一堆旧的16位应用程序时遇到问题。 应用程序在Windows2003服务器上运行良好,但是当我尝试从 它们都显示打印错误(无法创建打印机驱动程序/术语错误/etc)

    • LPT1端口通过NET USE LPT1\ServerName\shared printer重定向到共享打印机
    • DIR>LPT1(或任何指向打印机的shell重定向)工作正常。
    • 我使用的是管理员帐户,所以这不应该是权限问题,对吧?

    为了重现这种行为,我用C语言编写了一个小的测试程序(TCC 1.01用于DOS)。它运行良好 在XP/2003服务器上,但是在2008服务器上,它显示句柄打开(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;
    }
    

    有线索吗?

    蒂亚, 巴勃罗

    1 回复  |  直到 14 年前
        1
  •  0
  •   Nigel B    11 年前

    我发现了语法'print/d:{lpt?}{filename}'无法在Win2008上工作,不能从16位应用程序或命令行中工作。这种语法已经支持多年,我们在10台Win2003服务器上运行它。Win2008中是否有配置设置使其语法与以前版本的Windows兼容?顺便说一下,这里是微软技术公告,2012年4月更新,列出的语法与Win2008兼容。。。 http://technet.microsoft.com/en-us/library/cc731623 .