Если DOS-приложение не видит ключ Sentinel Pro на LPT

Есть у меня на поддержке одна очень специфическая программа (SIMS, кому интересно).  Написана она была в прошлом веке, работала (да и сейчас работает) под DOS. Понимая, что сейчас машину с чистым DOS’ом днем с огнем не найти, разработчики довели свое детище до состояния, когда оно вполне прилично работает под Windows. Напрямую опрашиваются COM-порты, печать отчетов на LPT, там же висит ключ защиты – Aladdin Sentinel Pro. И вот у одного клиента наступила “задница” – замшелый компьютер приказал долго жить. Быстро был заменен на вполне себе современный десктоп HP. Базы перенесены, оборудование переключено, а ключ защиты не виден ни под каким соусом. Без него нормальная работа в принципе невозможна.

Ключ в порядке (проверено), порт на компьютере в порядке (проверено), программа в порядке, ключ не виден.

В интернете на эту тему не удалось найти ничего вразумительного, кроме эмуляторов ключей. Однако, от разработчиков удалось добиться внятного ответа и описания решения. Выяснилось, что проблема возникает в основном с брендовыми компьютерами (HP, IBM, etc.), система на которые была установлена с дисков восстановления. Получается, что там практически отключена поддержка параллельного порта для DOS-приложений. Windows XP, установленная вручную, этой проблемы не имеет.

Решение достаточно простое, надо изменить 2 ключа в регистре:

1. HKLM\System\CurrentControlSet\Services\ParVdm\
У записи “Start” (REG_DWORD) поменять значение с “4” на “2”

2. Добавить (если его нет) ключ HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\
Добавить в него запись (у вас может быть другой путь!) "C:\Windows\system32\DRIVERS\parvdm.sys" типа DWORD и присвоить ей шестнадцатеричное значение “1”.

После перезагрузки программа должна обнаружить ключ защиты Sentinel Pro.

Подробнее о ключах регистра Windows: What are Control Sets? What is CurrentControlSet?

Leave a comment

Your comment