Некоторые картинки не загружаются из РФ и РК, используйте VPN.

суббота, 12 ноября 2022 г.

1СОшибка -2147221164(0x80040154): Класс не зарегистрирован

 Частая ошибка, решаемая банальной регистрацией comcntr.dll, но оказывается есть частные случаи, именно с таким я и столкнулся. Имеется сервер 2019, разработчик под учеткой с правами обычного пользователя получил такую ошибку. Что было предпринято:

  1. первое решение
    1. регистрация библиотеки требуемой версии платформы
  2. второе решение
    1. удалена регистрация билиотек других платформ (regsvr32.exe -u)
    2. зарегистрирована еще раз нужная
  3. третье решение
    1. удалены все платформы
    2. установлена требуемая по новой
    3. зарегистрирована библиотека
    4. перезагружен сервер
Все равно результата нет. Так как в какой-то момент разработчик спросил:

- От администратора выполняли регистрацию?
- А иначе нельзя! - хотел было сообщить я

да и проверка занимает более необходимого (от 5 минут до суток), я засомневался в необходимости продолжения этой пытки и исключил из цепочки разарботчика

- В какой базе и при каких условиях возникает ошибка?
- База там то, а там то нужно нажать кнопку
- Ок

Открыл под своей учеткой, нажал кнопку и все работает. Дабы не прослыть дураком, открыл под тем пользователем и получил таки ту же ошибку. Так, оказывается ошибка возникает только в контексте пользователя.
Вот теперь есть с чем работать. Вспоминаю что у меня настроена политика ограниченного использования программ (SRP), захожу туда, там стоит только два ограничения - запуск из директорий %Userproffile%\Downloads\*\* и %Temp%\*\* (с разрешением определенных пакетов). Да и в основных настройках SRP (Software Restriction Policies) указано нацеливание только на исполняемые файлы, dll в счет не идут
  1. четвертое решение
    1. проверить SRP
    2. удалить SRP
    3. gpupdate /force
    4. выгнать пользователя и зайти по новой
Хрен, проблема остается, тут на инфостарте натыкаюсь на одну заметку, где упоминается SRP:
  1. пятое решение
    1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя "V83COMConnector" (переключатель "Серверное приложение") – Указанный пользователь (Администратор*)
    2. В "V83COMConnector" – Компоненты – создать новый компонент – Установка новых компонентов - %каталог 1С%\bin\comcntr.dll *
    3. Правой кнопкой по ветке "V83COMConnector" – Свойства – Безопасность – снимаем "Принудительная проверка доступа для приложений" - ставим "Применить политику программных ограничений" - Уровень ограничений "Неограниченный"
    4. Включаем SRP, а заодно и AppLocker (позволяет запретить группе пользователей cmd.exe, mmc.exe, taskmgr.exe)
    5. Перезаходим и проверяем
Собственно вот и решение - установить COM приложение. Есть только пара моментов (помечены звездочкой):
  1. Администратор - пользователь с админскими правами, если пароль сменит, то могут быть проблемы (как у служб или планировщика заданий)
  2. На каждую платформу придется создавать новое приложение
  3. На сервере RDP под учетками других пользователей выскакивала ошибка "метод объекта не обнаружен (connect)", решилась установкой на вкладке удостоверение, свойств коннектора, - "Локальная служба - встроенная учетная запись службы"
  4. Пункт 3 в моем случае привел к ошибке разделенного доступа к БД, даже указание кредов админа не помогло, но перевод режима активации (вкладка свойств коннектора) из серверного приложения в библиотечное - помогло.
UP 07/07/2023


Сегодня столкнулся с ошибкой "Точка входа в процедуру не найдена в библиотеке C:\Program Files\1cv8\8.3.18.1957\bin\comcntr.dll". Это как раз к вопросу о необходимости пересоздания приложения. После попытки обновить компонент, вылез сабж у пользователя не администраторского уровня.
Проход по пунктам выше показал, что половина пунктов блокирует предыдущие, в итоге текущий конфиг V83COMConnector (64 разрядная платформа) с включенным SPR без AppLocker:
  1.  Общие
    1. Имя - V83COMConnector
  2. Безопасность
    1. Авторизация - выключена "Принудительная проверка доступа для приложения"
    2. Уровень доступа - "проверка доступа на уровне процесса и на уровне компонента"
    3. Политика программных ограничений - уровень ограничений - неограниченный
  3. Удостоверение
    1. Учетная запись - Указанный пользователь
  4. Активация
    1. Серверное приложение
Остальные параметры по умолчанию:


Плюс добавить компонент.

Комментариев нет:

Отправить комментарий