Ошибка печати из 16-разрядных приложений в Windows 2008 Server - PullRequest
0 голосов
/ 08 сентября 2010

У меня возникают проблемы при попытке запустить кучу старых 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), но при попытке записи в этот дескриптор выдает ошибку (Ошибка записи при записи устройства 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;
}

Есть какие-нибудь подсказки?

TIA, Pablo

1 Ответ

0 голосов
/ 10 июля 2013

Майк А - Я обнаружил, что синтаксис 'print / d: {lpt?} {Имя_файла}' не работает в Win2008, не из 16-битного приложения ИЛИ из командной строки. Этот синтаксис поддерживается годами, и мы запускаем его на 10 серверах Win2003. Может ли в Win2008 быть параметр конфигурации, который бы делал его синтаксис совместимым с предыдущими версиями Windows? Кстати, вот технический бюллетень Microsoft, который был обновлен в апреле 2012 года и в котором указан синтаксис, совместимый с Win2008 ... http://technet.microsoft.com/en-us/library/cc731623.

...