Ошибка "Invalid class string" (недопустимая строка класса) при попытке инициализировать V83.COMConnector является одной из самых труднорешаемых проблем в системном администрировании 1С. Она сигнализирует о том, что операционная система находит имя объекта, но не может корректно связать его с программным идентификатором или физическим файлом библиотеки comcntr.dll. Особенно остро эта проблема проявляется при переходе на 64-битные версии сервера и клиента 1С в среде Windows Server 2008 R2 и выше.
Рассмотрим комплексный подход к решению этой проблемы, переходя от простых манипуляций к глубокой настройке системных компонентов.
Прежде всего, проанализируем, почему стандартные методы регистрации часто не помогают. Ошибка может быть вызвана следующими факторами:
rphost.exe) пытается вызвать 32-битную библиотеку, или наоборот.USR1CV8), не имеет прав на ветки реестра HKEY_CLASSES_ROOT или на саму папку с библиотеками.Для начала убедимся, что мы регистрируем правильный файл правильной утилитой. На 64-битных системах существует две версии regsvr32.exe. Разберем порядок действий:
Если используется 64-битный сервер 1С, регистрация должна выполняться из папки C:\Program Files\1cv8\номер_версии\bin\. Запустим командную строку от имени администратора и выполним следующие команды:
cd /d "C:\Program Files\1cv8\8.3.XX.XXXX\bin"
regsvr32 /u comcntr.dll
regsvr32 comcntr.dll
Обратите внимание: если вы работаете в среде Windows Server 2008 R2, рекомендуется перед регистрацией перевести сервер в режим установки командой change user /install, а после завершения вернуть change user /execute. Это гарантирует правильную запись параметров в реестр для всех пользователей системы.
Иногда автоматическая регистрация проходит успешно, но ключи прописываются некорректно. Рассмотрим, на что стоит обратить внимание в редакторе реестра (regedit):
HKEY_CLASSES_ROOT\V83.COMConnector. В подразделе CLSID должно быть значение GUID (например, {B5E5F225-124B-11D4-8350-0020AF03AD57}).HKEY_CLASSES_ROOT\CLSID\{ваш-GUID}\InprocServer32.comcntr.dll в папке Program Files (а не Program Files (x86), если вы используете x64).CurVer в HKEY_CLASSES_ROOT\V83.COMConnector. Его значение должно указывать на V83.COMConnector.1.Если прямая регистрация не помогает, создадим "обертку" через Службы компонентов. Это позволит 64-битному процессу обращаться к библиотеке через изолированный процесс dllhost.exe. Разберем по шагам:
1C_COM_Connector) и выберем тип "Серверное приложение".comcntr.dll.Этот метод часто решает проблему "Invalid class string", так как система перестает зависеть от контекста выполнения вызывающего процесса.
Проанализируем ситуацию: если в файловом режиме (под текущим пользователем) COM-объект создается, а в серверном — нет, значит проблема в правах доступа учетной записи USR1CV8. Выясним, достаточно ли у нее прав:
USR1CV8 полные права на папку bin установленной платформы 1С.HKEY_CLASSES_ROOT\TypeLib. Учетная запись сервера 1С должна иметь права на чтение этой ветки.USR1CV8.Иногда comcntr.dll не может инициализироваться, потому что не находит необходимые системные библиотеки C++. Проанализируем состояние системы:
Depends (Dependency Walker). Откроем в ней comcntr.dll и посмотрим, нет ли модулей, помеченных красным цветом.rphost.exe и dllhost.exe в исключения или временно отключить DEP для проверки.Если ни один из шагов не помог, воспользуемся "тяжелой артиллерией" — инструментом Procmon. Рассмотрим алгоритм действий:
Procmon и настроим фильтр по процессу rphost.exe.
Попытка
Connector = Новый COMОбъект("V83.COMConnector");
Исключение
ЗаписьЖурналаРегистрации("Ошибка_COM", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
КонецПопытки;
Procmon и выполним поиск по строке "V83.COMConnector".ACCESS DENIED или NAME NOT FOUND. Это точно укажет, к какому файлу или ключу реестра система не смогла получить доступ.Подводя итог, отметим, что в 64-битных системах наиболее эффективным методом является комбинирование регистрации через regsvr32 и настройки COM+ приложения с четко заданным удостоверением пользователя. Это нивелирует большинство проблем с правами доступа и различиями в разрядности процессов.