Windows 2008 Server의 16비트 응용 프로그램에서 인쇄하는 동안 오류가 발생했습니다.

Windows 2008 Server의 16비트 응용 프로그램에서 인쇄하는 동안 오류가 발생했습니다.

Windows 2008 Server에서 오래된 16비트 응용 프로그램을 실행하는 데 문제가 있습니다. 응용 프로그램은 Windows 2003 Server까지 제대로 실행되었지만 그 중 하나에서 인쇄하려고 하면 모두 인쇄 오류가 표시됩니다(프린터 드라이버를 만들 수 없음/TERM 오류 등).

  • LPT1 포트는 NET USE LPT1\ServerName\SharedPrinter를 통해 공유 프린터로 리디렉션됩니다.
  • DIR > LPT1(또는 프린터로의 모든 셸 리디렉션)이 제대로 작동합니다.
  • 저는 관리자 계정을 사용하고 있으니 권한 문제는 아니겠죠?

동작을 재현하기 위해 C(DOS용 TCC 1.01)로 작은 테스트 프로그램을 만들었습니다. 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;
}

어떤 단서가 있나요?

TIA, 파블로

답변1

제 생각에는이 스레드문제를 해결합니다. 핵심 단계는 net use 대신 프린터 풀링을 사용하는 것입니다.

2) 프린터 속성 열기(Vista에서는 관리자 권한으로 열기)

3) "프린터 풀링"을 켭니다(포트 탭 아래).

4) 이미 선택된 항목(예: USB) 외에 "LPT1:"도 선택합니다.

5) 적용을 클릭하세요.

관련 정보