Используйте OCX без регистрации - PullRequest
29 голосов
/ 24 октября 2008

Можно ли использовать ocx (элемент управления ActiveX) в winform (возможно, добавляя его программно) без предварительной регистрации ocx в regsrv32?

Я пытаюсь включить установку xcopy. У меня есть файл "AxInterop. .dll" и "Interop. .dll", сгенерированный с моего компьютера разработчика.

Я видел возможность вызова COM-библиотеки DLL без предварительной регистрации ( ProSysLib , по словам автора, но я еще не проверял это), поскольку ocx также основан на COM, поэтому Я предполагаю, что должен быть какой-то способ сделать это.

Ответы [ 4 ]

32 голосов
/ 24 октября 2008

Да, это можно сделать. Вы должны предполагать, что ваше приложение будет развернуто только в Windows XP (или Windows Server 2003) или более поздней версии, и тогда вы можете использовать так называемый COM без регистрации, чтобы это произошло.

По сути, вы создаете файл манифеста для управляющей DLL ActiveX, чтобы загрузчик Windows и COM DLL знали, какая у него регистрация, без необходимости вносить это в реестр.

Краткое описание того, что нужно сделать, находится в этой статье на MSDN: Активация COM-компонентов без регистрации: пошаговое руководство

«Шаг 6» и «Шаг 7» в этой статье содержат все , что вам нужно.

Я только что попробовал это на одной из моих собственных программ на C #, которая использует элемент управления сеткой Microsoft ActiveX (старая "MS Flex Grid"), и она работает просто отлично. Убедитесь, что вы создали файл манифеста как для своего приложения, так и для COM DLL, и подставили соответствующие GUID в нужных местах. Возможно, вам придется использовать OLEVIEW, чтобы найти правильные идентификаторы для использования из библиотеки ActiveX DLL, если они у вас нет под рукой.

5 голосов
/ 18 марта 2009

Имейте в виду, что использование COM без регистрации для компонентов COM, созданных в .NET, может случайно привести к сбоям в Windows XP!

Ссылки: Вопрос Stackoverflow где я узнал об этом, база знаний Microsoft статья , упомянутая в этом вопросе. Есть исправление, но вы не можете распространять его.

2 голосов
/ 20 марта 2012

Это даже намного проще в Visual Studio: просто зайдите в Ссылки, найдите позиции, созданные вашим ocx (должно быть 2, AxSomething и Something) и установите для них обоих Isolated: true в их свойствах. Нет манифестов, нет кода. Теперь вы должны распространять ваш exe-файл с dll-файлом, содержащим ocx. На вашем разработчике ocx можно зарегистрировать.

1 голос
/ 11 апреля 2013

После 10 часов поиска, как запустить приложение VB6 с OCX на Win7 без регистрации его и прав администратора, я нашел несколько решений для щелчков здесь: http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c

Необходимо проверить Embed Manifest, чтобы он работал. Работает как шарм!

Я публикую здесь решение, потому что я также нашел этот вопрос здесь.

...