Зарегистрируйте OCX в текущем реестре пользователей - PullRequest
1 голос
/ 27 марта 2012

Можно ли программно зарегистрировать OCX или dll в текущем реестре пользователей в VB 6.0?Я много искал, но не смог найти решение.Я нашел код регистрации на уровне локальной машины, но не смог найти никакой помощи на уровне текущего пользователя, по ссылке, которая содержит код регистрации dll на локальной машине.

http://www.trixar.com/~makai/regx.htm

Пожалуйста, укажите мне направление, чтобы я мог зарегистрировать свои элементы управления только для текущего пользователя.

Ответы [ 2 ]

4 голосов
/ 28 марта 2012

Компилятор VB6 выдает код самостоятельной регистрации в соответствии со стандартами для самостоятельной регистрации COM, что подразумевает регистрацию на уровне отдельного компьютера.

Это проблема упаковки и развертывания, а не проблема программирования.

Как следует из документации для установщика Windows, самостоятельная регистрация считается резервным механизмом. В большинстве случаев процесс установки должен регистрировать саму библиотеку, а не вызывать точку входа self-reg. Это дает несколько преимуществ, в том числе возможность регистрации для каждого пользователя во время установки для каждого пользователя.

Но, начиная с Windows XP, появилась новая опция. Вы можете устанавливать приложения изолированно без регистрации компонентов, методика, также называемая «COM без регистрации». Это позволяет устанавливать приложения без регистрации компонентов на любом уровне, а также позволяет различным приложениям использовать свои собственные частные копии большинства библиотек несистемных компонентов, в которых они нуждаются. Исключение составляют серверы вне процесса, которые всегда требуют регистрации для каждого компьютера.

Так что ищите инструмент, предназначенный для помощи в регулярной упаковке COM. Существует несколько продуктов с открытым исходным кодом для использования разработчиками VB6, некоторые более обобщенные коммерческие инструменты и некоторые инструменты манифеста Microsoft, которые требуют больше ручной настройки, но должны быть полезны для этого.

1 голос
/ 27 марта 2012

Там, где сама DLL-библиотека регистрируется, зависит от DLL и ее авторов, вызывающее приложение не имеет прямого контроля над этим.

Если это для одной конкретной DLL, вы можете попытаться создать записи реестра самостоятельно, но вам нужно будет точно знать, какие объекты, интерфейсы и библиотеки типов должны быть зарегистрированы, и их данные. (Это не то, что я бы сделал сам, за исключением самой простой написанной мной DLL)

...