Как устранить неполадки регистрации / Использование .NET COM CO COLONABLABLE DLLL DLL?

StackOverflow https://stackoverflow.com//questions/9623307

  •  09-12-2019
  •  | 
  •  

Вопрос

Я написал C # .NET COM COMONABLE DLL DLL. Я подписал его Systanname и зарегистрировал кодовую базу и TypeLib с 64 битом Regasm.exe. Регистрация и все методы управления видны с 64-битным OLEViewer. Однако, когда я пытаюсь использовать управление из 64 бита \ Windows \ system32 \ cscript.exe:

  Set logger = CreateObject("MyCompany.LoggerControl")
.

Это дает ошибку:

Microsoft VBScript Runtime Ошибка выполнения: компонент ActiveX не может создавать объект: «MyCompany.loggerControl»

Использование procmon от sysutils для отслеживания этого, я нахожу:

1: 41: 44,8295486 вечера cscript.exe 24028 Regopenkey HKCR \ mycompany.loggercontrol
Имя не нашел желаемый доступ: прочитайте

Тем не менее, этот ключ существует в Regedit. Процесс вызова запущен из повышенной командной строки. Если это проблема в безопасности, не должна ли ошибка «доступом запрещено» вместо «имени не найдена»?

Какие другие инструменты для отслеживания этого типа COM Control Registrate Ошибка регистрации?

Это было полезно?

Решение

Вот пара идей устранения неполадок:

  1. Определите точное возвращаемое число ошибок при попытке создать объект:

    по ошибке возобновить следующую

    Set logger= createObject ("mycompany.loggercontrol") Если ошибаться тогда Wscript.echo "Ошибка #" & err.number Wscript.echo err.description. Wscript.Quit 1. Конец, если

  2. Посмотрите на этот код ошибки. Например, это «доступ запрещен» или какая-то другая ошибка?

  3. Создайте исполняемый файл C #, чтобы позвонить своему объекту и посмотреть, может ли он может успешно создать его.

  4. Убедитесь, что ваша DLL не имеет никаких других зависимостей, которые предотвращают его загруженные в каталог, выполнив ваш скрипт. Вы можете использовать dependents.exe из каталога. Вы используете свой скрипт, или вы можете использовать мою любимую технику бедных мужчин REGSVR32, чтобы попытаться загрузить DLL. Если DLL не может загрузиться из-за зависимости, вы получите диалог ошибки, сообщив, что он не может найти другую DLL или загрузить одну из его зависимостей. Если он может загрузить DLL OK, это скажет, что она успешно зарегистрирована.

    C: \ pathtovbs> Regsvr32 c: \ pathtoyourdll \ yourdll.dll

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top