
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) 적용을 클릭하세요.