В инструкции по регистрации DLL, поставляемой с модулем SDK PERCo, очень кратко сказано:
«Зарегистрировать PERCo_S20_SDK.DLL при помощи regsvr32.exe (regsvr32.exe PERCo_S20_SDK.dll)»
Однако при выполнении этого действия возникает куча нюансов, без учета которых COM-соединение может и не заработать.
Больше всего сложностей возникает при регистрации в 64-битной операционной системе при установленном 64-битном сервере 1С:Предприятия, этот вариант и рассмотрим.
- Копируем файл PERCo_S20_SDK.DLL в папку C:\Windows\SysWOW64 сервера.
- Запускаем командную строку «от имени администратора».
- Пишем в командной строке:
«C:\Windows\SysWOW64\regsvr32» «C:\Windows\SysWOW64\PERCo_S20_SDK.dll»
и запускаем. Появляется сообщение об успешной регистрации.
Примечание. Если Вы делаете это не в первый раз и успели «наследить» в разных папках, рекомендуется сначала деинсталлировать – выполнить команды:
«C:\Windows\SysWOW64\regsvr32» «C:\Windows\SysWOW64\PERCo_S20_SDK.dll» /u
«C:\Windows\System32\regsvr32» «C:\Windows\System32\PERCo_S20_SDK.dll» /u
- Теперь необходимо обеспечить работоспособность зарегистрированной библиотеки для этого 32-битного СОМ-соединение под 64-битным сервером 1С:Предприятия. В интернете полно инструкций как регистрировать и для чего это нужно. Но к сожалению большинство из них не полные. В том числе на популярных инфостарте и мисте. Поэтому далее подробно распишем, как же все-таки запустить так, «чтобы оно взлетело».
Запуск x32 COM-объектов из x64 приложения
- Итак, мы уже знаем, что 64 битные приложения не могут запускать 32 битные DLL которые активируются при запуске 32 битного COM объекта 1С. Для решения проблемы нужно воспользоваться оберткой COM+ которая, являясь 64 битным приложением, может взаимодействовать с 32 битными библиотеками.
- Запускаем консоль «Службы компонентов»:
Пуск -> Администрирование -> Службы компонентов
- В ветке Приложения COM+ добавляем новое приложение:
Действие -> Новый документ
- Открывается мастер. На вопрос «Установка или создание нового приложения» — выбираем «Создать новое приложение».
- Указываем имя нового приложения и способ активации — «серверное приложение»:
- В разделе учетной записи выбираем вариант «Указанный пользователь» и задаем имя и пароль того пользователя, под которым стартует агент сервера 1С:Предприятия (если забыли, проверьте в службах).
- По кнопке «Далее» доходим до добавления пользователей для ролей, щелкаем мышью на «Users» и затем на кнопку «Добавить»:
- Переходим на страницу «Добавление пользователей для ролей», открываем роль «CreatorOwner» и далее в разделе «Пользователи» создаем пользователя – указываем ту же учетную запись под которой работает сервер 1С.
- В ветке созданного приложения переходим на ветку «Компоненты» и создаем компонент: Действие -> Новый документ
- Откроется мастер установки компонентов COM+ , выбираем «Установка новых компонентов», и в диалоге выбираем нужную DLL-ку (т.к. мы ее ранее скопировали в папку WOW64, поэтому берем оттуда же: C:\Windows\SysWOW64\PERCo_S20_SDK.dll)
- Открываем свойства только что созданного компонента:
идем на вкладку «Безопасность», проверяем в списке «Явно установленные для выделенных объектов роли» стоит ли «птичка» напротив роли CreatorOwner — если нет, тогда устанавливаем эту галку, и ставим галку «Принудительная проверка доступа на уровне компонента»;
- В службах компонентов возвращаемся в ветку Приложения COM+, находим зарегистрированное приложение Perco_SDK, жмем правой кнопкой мыши и выбираем пункт «Пуск». Если ошибок не возникло и приложение «ожило» (включилась анимация ярлыка), то на этом все, можно проверять работоспособность. Если же возникли проблемы, то выполните еще несколько действий:
- В службах компонентов в ветке «Приложения COM+», на зарегистрированном приложении «Perco_SDK», жмем правой кнопкой мыши и выбираем пункт «Свойства».
- Переходим на вкладку «Безопасность» и устанавливаем галку на «Принудительная проверка доступа для приложения». Переключатель напротив «Проверка доступа на уровне процесса и на уровне компонента…», «Применять политику программных ограничений», «Уровень ограничений: Неограниченный», «Уровень проверки подлинности для вызовов: Подключиться», «Уровень олицетворения: Определить»;
- Переходим на вкладку «Активация», выбираем способ активации «Серверное приложение», ставим галку «Запустить приложение как службу NT»
- Применяем изменения (кнопка ОК или Применить)
- Снова в службах компонентов в ветке «Приложения COM+», на зарегистрированном приложении Perco_SDK жмем правой кнопкой мыши и выбираем пункт «Пуск».