Почему 1С:Зарплата и кадры 7.7 не видит локальный ключ HASP на 64-разрядной Windows 7 и как решить проблему?

Системный администратор 1С v7.7 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При переносе конфигураций на платформе 1С:Предприятие 7.7 (в частности, конфигурации «Зарплата и кадры 7.7») на современные рабочие станции под управлением 64-разрядных операционных систем (Windows 7 x64 и новее) системные администраторы часто сталкиваются с ошибкой: «Не найден ключ защиты программы». При этом сетевые ключи или ключи от версии 1С 8 работают без каких-либо нареканий, само устройство корректно определяется в диспетчере оборудования, а индикатор на USB-ключе горит. Проанализируем технические причины этой проблемы и подробно разберем рабочие варианты её решения.

Выясним причину: почему локальный HASP 7.7 не работает на 64-битных системах

Рассмотрим глубинную механику взаимодействия платформы с аппаратным ключом защиты:

  1. Архитектурные ограничения платформы 1С 7.7. Исполняемые файлы платформы 1cv7.exe и 1cv7s.exe скомпилированы с устаревшей 32-разрядной библиотекой защиты HASP4. Для поиска локального ключа платформа обращается напрямую к драйверу защиты посредством прямых низкоуровневых вызовов ядра (IOCTL).
  2. Несовместимость с подсистемой WOW64. Современные 64-разрядные драйверы Sentinel/Aladdin без ошибок определяют и регистрируют USB-устройство в среде 64-битной Windows. Однако трансляция устаревших 32-битных вызовов от платформы 1С 7.7 в 64-битный режим ядра не поддерживается. Из-за этого драйвер не может передать приложению ответ от физического ключа.
  3. Разница в работе сетевых и локальных ключей. Сетевая версия (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. Разберем этот процесс по шагам:

  1. Установим компоненты Windows Virtual PC и готовый образ Windows XP Mode с официального сайта Microsoft.
  2. Запустим виртуальную машину Windows XP и выполним подключение нашего локального ключа защиты через верхнее меню: USB -> Подключить [Aladdin HASP...]. Произойдет захват порта (USB Passthrough), и 32-разрядная Windows XP перехватит управление ключом.
  3. Установим в среде виртуальной машины платформу «1С:Предприятие 7.7», драйвер ключа защиты и скопируем информационную базу.
  4. Опубликуем ярлык программы в виртуальной машине. Благодаря механизму интеграции приложений (RemoteApp) бухгалтер сможет запускать «Зарплату и кадры» прямо с рабочего стола Windows 7 в отдельном окне без ощущения работы в сторонней ОС.

Если используется другая операционная система или сторонний гипервизор, аналогичную изоляцию можно развернуть с помощью Oracle VirtualBox или VMware Workstation Player с активацией проброса USB-устройств.

Решение 2. Официальный апгрейд до сетевой версии

Рассмотрим наиболее надежное и штатное решение для корпоративной среды — замену однопользовательской лицензии на сетевую:

  1. Обратимся к обслуживающему партнеру фирмы 1С для оформления апгрейда ключа «Зарплата и кадры 7.7» с локального на сетевой (NetHASP).
  2. Установим полученный сетевой ключ на сервер или любой рабочий компьютер сети, после чего запустим службу HASP License Manager.
  3. В каталоге платформы BIN на рабочей станции с 64-битной системой настроим файл конфигурации nethasp.ini, явно указав IP-адрес машины, где установлен менеджер лицензий:
    
    [NH_COMMON]
    NH_TCPIP = Enabled
    
    [NH_TCPIP]
    NH_SERVER_ADDR = 192.168.1.100
    NH_PORT_NUMBER = 475
    NH_TCPIP_METHOD = UDP
    
  4. Поскольку сетевая платформа 1С 7.7 опрашивает сетевые порты по протоколу TCP/IP, проблема несовместимости с драйвером подсистемы WOW64 в среде x64 будет полностью исключена.

Решение 3. Организация удаленного доступа через RDP

Если апгрейд не планируется, а виртуальная машина на локальном компьютере создает избыточную нагрузку, проанализируем схему с терминальным доступом:

  1. Оставим физический ключ защиты в компьютере с 32-разрядной операционной системой (Windows XP или 32-разрядная версия Windows 7).
  2. Настроим на этой машине стандартный протокол удаленного рабочего стола (RDP).
  3. На рабочей станции с Windows 7 x64 создадим RDP-подключение для бухгалтера. Вся работа с базой и непосредственное обращение к ключу защиты будут выполняться локально внутри 32-битной среды.

Важные особенности эксплуатации 1С 7.7 на Windows 7 x64

При переносе программы на платформу x64 обратим внимание на сопутствующие системные ошибки, которые возникнут сразу после решения проблемы с ключом:

  1. 16-разрядный установщик. Штатный файл инсталляции setup.exe в оригинальных дистрибутивах 1С 7.7 является 16-битным приложением. В 64-разрядной ОС он блокируется системой. Переносить платформу следует простым копированием каталога программы (обычно C:\Program Files (x86)\1Cv77\BIN\) с последующей регистрацией библиотек.
  2. Ошибка «Порядок сортировки, установленный для базы данных, отличается от системного». В Windows 7 используется обновленная таблица сортировки символов, не совпадающая с Windows XP. Для обхода ошибки создадим пустой файл с именем OrdNoChk.prm и разместим его либо в каталоге платформы BIN, либо непосредственно в каталоге информационной базы. Альтернативный путь — открыть информационную базу через Конфигуратор и в меню Администрирование -> Кодовая страница таблиц ИБ выбрать пункт «Текущая системная установка».
  3. Предотвращение выполнения данных (DEP). Если платформа аварийно завершает работу при старте, настроим исключения DEP. Перейдем в Свойства системы -> Дополнительно -> Быстродействие -> Параметры -> Предотвращение выполнения данных, выберем режим включения DEP для всех программ, кроме выбранных, и добавим исполняемые файлы 1cv7.exe и 1cv7s.exe в список доверенных.
← На главную