При переносе конфигураций на платформе 1С:Предприятие 7.7 (в частности, конфигурации «Зарплата и кадры 7.7») на современные рабочие станции под управлением 64-разрядных операционных систем (Windows 7 x64 и новее) системные администраторы часто сталкиваются с ошибкой: «Не найден ключ защиты программы». При этом сетевые ключи или ключи от версии 1С 8 работают без каких-либо нареканий, само устройство корректно определяется в диспетчере оборудования, а индикатор на USB-ключе горит. Проанализируем технические причины этой проблемы и подробно разберем рабочие варианты её решения.
Выясним причину: почему локальный HASP 7.7 не работает на 64-битных системах
Рассмотрим глубинную механику взаимодействия платформы с аппаратным ключом защиты:
Архитектурные ограничения платформы 1С 7.7. Исполняемые файлы платформы 1cv7.exe и 1cv7s.exe скомпилированы с устаревшей 32-разрядной библиотекой защиты HASP4. Для поиска локального ключа платформа обращается напрямую к драйверу защиты посредством прямых низкоуровневых вызовов ядра (IOCTL).
Несовместимость с подсистемой WOW64. Современные 64-разрядные драйверы Sentinel/Aladdin без ошибок определяют и регистрируют USB-устройство в среде 64-битной Windows. Однако трансляция устаревших 32-битных вызовов от платформы 1С 7.7 в 64-битный режим ядра не поддерживается. Из-за этого драйвер не может передать приложению ответ от физического ключа.
Разница в работе сетевых и локальных ключей. Сетевая версия (NetHASP) обращается к ключу не через прямые вызовы драйвера ядра, а по сети через протоколы TCP/UDP (порт 475), взаимодействуя со службой менеджера лицензий (HASP License Manager). Этот сетевой протокол без сбоев транслируется в 64-битных ОС. Однако локальные (однопользовательские) ключи менеджер лицензий обслуживать не может.
Таким образом, заставить напрямую работать локальный USB-ключ 1С 7.7 в среде Windows x64 невозможно никакими версиями драйверов. Разберем доступные варианты решения задачи.
Решение 1. Использование встроенной виртуализации Windows XP Mode
Поскольку на компьютере развернута редакция Windows 7 Professional (или Enterprise/Ultimate), мы можем воспользоваться официальным средством виртуализации Windows XP Mode на базе Windows Virtual PC. Разберем этот процесс по шагам:
Установим компоненты Windows Virtual PC и готовый образ Windows XP Mode с официального сайта Microsoft.
Запустим виртуальную машину Windows XP и выполним подключение нашего локального ключа защиты через верхнее меню: USB -> Подключить [Aladdin HASP...]. Произойдет захват порта (USB Passthrough), и 32-разрядная Windows XP перехватит управление ключом.
Установим в среде виртуальной машины платформу «1С:Предприятие 7.7», драйвер ключа защиты и скопируем информационную базу.
Опубликуем ярлык программы в виртуальной машине. Благодаря механизму интеграции приложений (RemoteApp) бухгалтер сможет запускать «Зарплату и кадры» прямо с рабочего стола Windows 7 в отдельном окне без ощущения работы в сторонней ОС.
Если используется другая операционная система или сторонний гипервизор, аналогичную изоляцию можно развернуть с помощью Oracle VirtualBox или VMware Workstation Player с активацией проброса USB-устройств.
Решение 2. Официальный апгрейд до сетевой версии
Рассмотрим наиболее надежное и штатное решение для корпоративной среды — замену однопользовательской лицензии на сетевую:
Обратимся к обслуживающему партнеру фирмы 1С для оформления апгрейда ключа «Зарплата и кадры 7.7» с локального на сетевой (NetHASP).
Установим полученный сетевой ключ на сервер или любой рабочий компьютер сети, после чего запустим службу HASP License Manager.
В каталоге платформы BIN на рабочей станции с 64-битной системой настроим файл конфигурации nethasp.ini, явно указав IP-адрес машины, где установлен менеджер лицензий:
Поскольку сетевая платформа 1С 7.7 опрашивает сетевые порты по протоколу TCP/IP, проблема несовместимости с драйвером подсистемы WOW64 в среде x64 будет полностью исключена.
Решение 3. Организация удаленного доступа через RDP
Если апгрейд не планируется, а виртуальная машина на локальном компьютере создает избыточную нагрузку, проанализируем схему с терминальным доступом:
Оставим физический ключ защиты в компьютере с 32-разрядной операционной системой (Windows XP или 32-разрядная версия Windows 7).
Настроим на этой машине стандартный протокол удаленного рабочего стола (RDP).
На рабочей станции с Windows 7 x64 создадим RDP-подключение для бухгалтера. Вся работа с базой и непосредственное обращение к ключу защиты будут выполняться локально внутри 32-битной среды.
Важные особенности эксплуатации 1С 7.7 на Windows 7 x64
При переносе программы на платформу x64 обратим внимание на сопутствующие системные ошибки, которые возникнут сразу после решения проблемы с ключом:
16-разрядный установщик. Штатный файл инсталляции setup.exe в оригинальных дистрибутивах 1С 7.7 является 16-битным приложением. В 64-разрядной ОС он блокируется системой. Переносить платформу следует простым копированием каталога программы (обычно C:\Program Files (x86)\1Cv77\BIN\) с последующей регистрацией библиотек.
Ошибка «Порядок сортировки, установленный для базы данных, отличается от системного». В Windows 7 используется обновленная таблица сортировки символов, не совпадающая с Windows XP. Для обхода ошибки создадим пустой файл с именем OrdNoChk.prm и разместим его либо в каталоге платформы BIN, либо непосредственно в каталоге информационной базы. Альтернативный путь — открыть информационную базу через Конфигуратор и в меню Администрирование -> Кодовая страница таблиц ИБ выбрать пункт «Текущая системная установка».
Предотвращение выполнения данных (DEP). Если платформа аварийно завершает работу при старте, настроим исключения DEP. Перейдем в Свойства системы -> Дополнительно -> Быстродействие -> Параметры -> Предотвращение выполнения данных, выберем режим включения DEP для всех программ, кроме выбранных, и добавим исполняемые файлы 1cv7.exe и 1cv7s.exe в список доверенных.