从Windows 2008 Server中的16位应用程序打印时出错
我在Windows2008Server中运行一堆旧的16位应用程序时遇到问题。 这些应用程序在Windows2003Server之前运行良好,但是当我尝试从任何一个 它们都显示打印错误(无法创建打印机驱动程序/术语错误/etc)从Windows 2008 Server中的16位应用程序打印时出错,windows,printing,windows-server-2008,Windows,Printing,Windows Server 2008,我在Windows2008Server中运行一堆旧的16位应用程序时遇到问题。 这些应用程序在Windows2003Server之前运行良好,但是当我尝试从任何一个 它们都显示打印错误(无法创建打印机驱动程序/术语错误/etc) LPT1端口通过NET USE LPT1\ServerName\SharedPrinter重定向到共享打印机 DIR>LPT1(或任何指向打印机的shell重定向)工作正常 我使用的是管理员帐户,所以这不应该是权限问题,对吗 为了重现这种行为,我用C语言编写了一个小
- LPT1端口通过NET USE LPT1\ServerName\SharedPrinter重定向到共享打印机
- DIR>LPT1(或任何指向打印机的shell重定向)工作正常
- 我使用的是管理员帐户,所以这不应该是权限问题,对吗
#包括
#包括
#包括
内部主(空)
{
int句柄,状态;
char*sbuff;
手柄=打开(“LPT1”,仅限O_WRK,S_IFBLK);
printf(“%d\n”,句柄);
如果(!句柄)
{
printf(“打开失败\n”);
出口(1);
}
sbuff=“[print test]\n”;
写入(句柄、sbuff、strlen(sbuff));
关闭(手柄);
getch();
返回0;
}
有什么线索吗
蒂亚,
PabloMike A-我发现语法“print/d:{lpt?}{filename}”在Win2008上不起作用,在16位应用程序中或命令行中都不起作用。这种语法已经支持多年了,我们在10台Win2003服务器上运行它。Win2008中是否有配置设置,使其语法与以前版本的Windows兼容?顺便说一句,这里是2012年4月更新的Microsoft技术公告,其中列出了与Win2008兼容的语法 当编译为32位时,你的测试程序能正常工作吗?@Cameron:我没有试过,但这样做的意义何在?如果它能工作,我就无法重新编译所有旧的应用程序(在XP/2003服务器上运行良好),因为它们中的许多都来自第三方,我没有源代码。是的,但是你肯定知道这是一个奇怪的32/16位不兼容问题,还是与程序的位无关的其他问题。
#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;
}