Ошибка печати из 16-разрядных приложений в Windows 2008 Server

Ошибка печати из 16-разрядных приложений в Windows 2008 Server

У меня возникли проблемы при попытке запустить кучу старых 16-битных приложений в Windows 2008 Server. Приложения работали нормально до Windows 2003 Server, но когда я пытаюсь печатать из любого из них, все они выдают ошибки печати (Невозможно создать драйвер принтера / Ошибка TERM / и т. д.)

  • Порт LPT1 перенаправляется на общий принтер через NET USE LPT1 \ServerName\SharedPrinter
  • DIR > LPT1 (или любое перенаправление оболочки на принтер) работает нормально.
  • Я использую учетную запись администратора, так что проблем с правами доступа быть не должно, верно?

Чтобы воспроизвести поведение, я сделал небольшую тестовую программу на языке C (TCC 1.01 для DOS). Она отлично работает в XP / 2003 Server, но на 2008 Server она показывает открытие дескриптора (5), но когда пытается записать в этот дескриптор, выдает ошибку (Write fault error writing device LPT1, Abort, Retry, Ignore, Fail)

#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

Я думаюэта темарешает вашу проблему. Ключевой шаг — использовать пул принтеров вместо использования сети.

2) Откройте свойства принтера (в Vista откройте от имени администратора)

3) Включите «Пул принтеров» (на вкладке «Порты»)

4) В дополнение к уже выбранному (например, USB), также выберите «LPT1:»

5) Нажмите «Применить».

Связанный контент