Как решить проблему COM-соединения 1С для пользователей без прав администратора в Windows?

Системный администратор 1С v8.3 (Управляемые формы)
← На главную

Многие пользователи 1С сталкиваются с проблемой, когда синхронизация данных или другие операции, использующие COM-соединение, успешно выполняются под учетной записью администратора Windows, но выдают ошибку для обычных пользователей. Типичная ошибка при этом — "-2147221005(0x800401F3): Недопустимая строка с указанием класса" при попытке создания объекта COMObject("V83.COMConnector"). Рассмотрим эту проблему подробнее и выясним причины ее возникновения, а также предложим несколько проверенных решений.

Причины возникновения ошибки

Основная причина заключается в том, что обычным пользователям Windows не хватает прав для регистрации, доступа или активации COM-объектов, необходимых для работы 1С. В частности, это касается компонента comcntr.dll, который отвечает за COM-соединение с платформой 1С. Несмотря на то, что компонент может быть зарегистрирован глобально в системе, для его корректной работы из-под обычного пользователя требуются дополнительные настройки безопасности в операционной системе. Для быстрой проверки состояния comcntr.dll можно использовать обработку для диагностики COM-соединения и параметров регистрации comcntr.dll в реестре.

Решение 1: Детальная настройка прав в службах компонентов (DCOM)

Это наиболее полное и рекомендуемое решение, которое обеспечивает гранулярный контроль над разрешениями для COM-объектов. Нам потребуется настроить параметры безопасности DCOM для всего компьютера и для конкретного приложения 1С (V83.COMConnector).

  1. Откроем оснастку "Службы компонентов" (DCOMCNFG):

    Для этого можно использовать один из следующих способов:

    • Через "Панель управления" -> "Администрирование" -> "Службы компонентов".
    • Нажать Win+R, ввести dcomcnfg и нажать Enter.
  2. Настроим свойства "Моего компьютера":

    В дереве консоли разверните "Службы компонентов" -> "Компьютеры" -> "Мой компьютер". Щелкните правой кнопкой мыши по "Мой компьютер" и выберите "Свойства". Перейдите на вкладку "Безопасность COM".

    Здесь нам необходимо отредактировать два раздела:

    • Права доступа: В разделе "Разрешения на доступ" нажмите кнопку "Изменить пределы...". Убедитесь, что группа "Пользователи" (или конкретные пользователи, которым нужен доступ) присутствует в списке и имеет разрешения "Локальный доступ" и "Удаленный доступ". Если нет, добавьте ее и установите необходимые галочки.
    • Права на запуск и активацию: В разделе "Разрешения на запуск и активацию" также нажмите кнопку "Изменить пределы...". Добавьте группу "Пользователи" (или конкретных пользователей) и предоставьте ей разрешения "Локальный запуск", "Удаленный запуск", "Локальная активация" и "Удаленная активация".
  3. Настроим конкретное приложение 1С:

    Теперь нам нужно найти приложение COM+, соответствующее нашей версии платформы 1С. В дереве консоли перейдите в "Службы компонентов" -> "Компьютеры" -> "Мой компьютер" -> "Приложения COM+". Обычно для 1С это будет что-то вроде V83.COMConnector.

    Если такого приложения нет, его необходимо создать:

    1. Правой кнопкой мыши по "Приложения COM+" -> "Создать" -> "Приложение".
    2. Нажмите "Далее", затем "Создать новое приложение".
    3. Введите имя, например, V83.COMConnector. Выберите переключатель "Серверное приложение".
    4. В качестве пользователя выберите "Указанный пользователь" и укажите учетные данные администратора или пользователя с достаточными правами, под которым будет запускаться компонент (например, локальный администратор).
    5. После создания приложения, разверните его ветку, найдите подветку "Компоненты". Правой кнопкой мыши по "Компоненты" -> "Создать" -> "Компонент".
    6. Нажмите "Далее", затем "Установка новых компонентов". Укажите путь к comcntr.dll вашей 32-битной платформы, например, C:\Program Files (x86)\1cv8\8.3.ХХ.ХХХХ\bin\comcntr.dll.

    После того как приложение V83.COMConnector (или аналогичное) создано и содержит компонент, откроем его свойства (правой кнопкой мыши по приложению V83.COMConnector) и перейдем на вкладку "Безопасность".

    Здесь нам нужно настроить следующие параметры:

    • Разрешения на запуск и активацию: Выберите опцию "Настроить" и нажмите "Изменить". Добавьте необходимых пользователей или группы ("Пользователи", конкретный пользователь 1С) и предоставьте им разрешения "Локальный запуск", "Удаленный запуск", "Локальная активация" и "Удаленная активация".
    • Разрешения на доступ: Аналогично выберите "Настроить" и нажмите "Изменить". Добавьте тех же пользователей или группы и предоставьте им "Локальный доступ" и "Удаленный доступ".
    • Принудительная проверка доступа: В некоторых случаях помогает снять галку "Принудительная проверка доступа для приложений", но будьте осторожны, это может снизить безопасность. Как альтернатива, можно поставить галку "Применить политику программных ограничений" и выбрать уровень ограничений "Неограниченный".
  4. Дополнительные настройки в 1CEStart.cfg (для специфических случаев):

    В некоторых случаях, особенно при проблемах с лицензированием через COM-соединение, может потребоваться изменить параметр в файле 1CEStart.cfg. Этот файл обычно находится в профиле пользователя (например, C:\Users\<ИмяПользователя>\AppData\Roaming\1C\1CEStart\1CEStart.cfg или C:\Documents and Settings\<ИмяПользователя>\Application Data\1C\1CEStart\1CEStart.cfg для старых ОС).

    Найдите или добавьте параметр UseHWLicenses и установите его значение в 1:

    UseHWLicenses=1

    Это указывает платформе на использование аппаратных лицензий (если они есть), что может повлиять на процесс инициализации COM-объекта.

Решение 2: Регистрация comcntr.dll под профилем каждого пользователя

Этот метод является эффективным дополнением к настройкам DCOM или может служить быстрым решением, когда проблема связана с отсутствием пользовательских записей в реестре.

  1. Входим под учетной записью проблемного пользователя: Авторизуемся в Windows Server под тем обычным пользователем, у которого возникают проблемы с COM-соединением.
  2. Предоставляем временные административные права: Просим системного администратора временно включить этого пользователя в группу "Локальные администраторы" на сервере или компьютере, где будет использоваться COM-соединение.
  3. Запускаем командную строку от имени администратора: Нажимаем Win+R, вводим cmd, затем нажимаем Ctrl+Shift+Enter или правой кнопкой мыши по ярлыку "Командная строка" и выбираем "Запуск от имени администратора". Важно, чтобы CMD был запущен именно из сессии обычного пользователя, но с правами администратора.
  4. Регистрируем comcntr.dll: Используем команду regsvr32 для регистрации компонента. Убедитесь, что вы указываете путь к 32-битной версии comcntr.dll, так как платформа автора 32-битная, и базы файловые (чаще всего 32-битная):
  5. regsvr32 "C:\Program Files (x86)\1cv8\8.3.ХХ.ХХХХ\bin\comcntr.dll"

Где 8.3.ХХ.ХХХХ — это полный номер вашей платформы 1С.

Важно: Этот метод создает необходимые записи в ветке реестра HKEY_CURRENT_USER для данного пользователя, которые могут отсутствовать при глобальной регистрации из-под другой учетной записи.

Решение 3: Проверка и настройка прав на ветки реестра

В некоторых случаях, проблема может быть связана с недостаточными правами доступа к определенным веткам системного реестра Windows, где хранятся данные о COM-объектах.

  1. Откройте редактор реестра: Нажмите Win+R, введите regedit и нажмите Enter.
  2. Перейдите к соответствующим веткам:
    • Для 32-битных компонентов на 64-битной ОС это обычно HKEY_CLASSES_ROOT\WOW6432Node\CLSID.
    • Для 32-битных компонентов на 32-битной ОС это HKEY_CLASSES_ROOT\CLSID.
  3. Найдите CLSID для V83.COMConnector: Мы не знаем точный CLSID заранее, но его можно найти, используя утилиту OleView.exe (входит в состав Windows SDK) или по имени программы в "Службах компонентов". В списке CLSID найдите тот, который относится к V83.COMConnector.
  4. Проверьте права доступа: Щелкните правой кнопкой мыши по найденной ветке CLSID, выберите "Разрешения..." (Permissions). Убедитесь, что у группы "Пользователи" или конкретного проблемного пользователя есть права на чтение для этой ветки и ее подразделов. При необходимости добавьте пользователя/группу и предоставьте соответствующие права.

Дополнительные рекомендации и устранение неполадок

  1. Проверка разрядности платформы: Удостоверьтесь, что вы используете 32-битную платформу 1С, если comcntr.dll зарегистрирована из 32-битного каталога Program Files (x86). COM-объекты должны соответствовать разрядности вызывающего приложения.
  2. Контроль учетных записей (UAC): На серверах и рабочих станциях с активным UAC, он может влиять на работу COM-объектов. В качестве диагностического шага можно временно понизить уровень UAC или отключить его для проверки, влияет ли это на проблему. Однако, для постоянного решения следует искать более тонкую настройку политик безопасности, а не отключать UAC.
  3. Добавление пользователя службы 1С в группу локальных администраторов (временное решение): Если у вас есть служба сервера 1С (хотя автор указал файловые базы), и проблема связана с ней, то добавление учетной записи, от имени которой запущена служба 1С (например, USR1CV8), в группу "Локальные администраторы" может решить проблему. Это следует рассматривать как временное или диагностическое решение из соображений безопасности.
  4. Переустановка платформы: В редких случаях, когда другие методы не помогают, может быть полезно переустановить платформу 1С, убедившись, что компонент "COM-соединение" выбран во время установки. Это гарантирует корректную регистрацию всех необходимых DLL-библиотек.

Применение этих комплексных подходов к настройке прав DCOM и регистрации компонентов обычно помогает устранить проблемы с COM-соединением 1С для пользователей без прав администратора, обеспечивая стабильную работу синхронизации и других механизмов.

← На главную