суббота, 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%\*\* (с разрешением определенных пакетов). Да и в основных настройках SPR указано нацеливание только на исполняемые файлы, dll в счет не идут
  1. четвертое решение
    1. проверить SPR
    2. удалить SPR
    3. gpupdate /force
    4. выгнать пользователя и зайти по новой
Хрен, проблема остается, тут на инфостарте натыкаюсь на одну заметку, где упоминается SPR:
  1. пятое решение
    1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя "V83COMConnector" (переключатель "Серверное приложение") – Указанный пользователь (Администратор*)
    2. В "V83COMConnector" – Компоненты – создать новый компонент – Установка новых компонентов - %каталог 1С%\bin\comcntr.dll *
    3. Правой кнопкой по ветке "V83COMConnector" – Свойства – Безопасность – снимаем "Принудительная проверка доступа для приложений" - ставим "Применить политику программных ограничений" - Уровень ограничений "Неограниченный"
    4. Включаем SPR, а заодно и AppLocker (позволяет запретить группе пользователей cmd.exe, mmc.exe, taskmgr.exe)
    5. Перезаходим и проверяем
Собственно вот и решение - установить COM приложение. Есть только пара моментов (помечены звездочкой):
  1. Администратор - пользователь с админскими правами, если пароль сменит, то могут быть проблемы (как у служб или планировщика заданий)
  2. На каждую платформу придется создавать новое приложение

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

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