Коротко про регистрацию COM-объектов

Привет всем.

В старые, добрые времена (когда …) было нормой использовать команду «regsvr32.exe ComServer.DLL» для регистрации COM-объектов в реестре Windows.

Однако эти времена, походу, давно закончились с выходом Windows Vista.

Я, у себя на компьютере, дал себе полные права для обновления ветки реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Classes» и продолжаю заниматься этими грязными делами под обычным пользовательским аккаунтом.

Ахтунг:
1. Не пытайтесь это сделать с веткой «HKEY_CLASSES_ROOT».
2. Сделайте точку сохранения системы.
3. Лучше вообще не делать это.

Если ничего не трогать, то сейчас даже администратор компьютера не может выполнить «regsvr32.exe» — получит ошибку доступа. Нужно запускать из окружения с повышенными правами — то есть запускаем «cmd.exe» с правами администратора, а потом из этой консоли выполняем «regsvr32.exe».

Но в целом, повторюсь, все это теперь считается «неправильным» способом.

Тут вот еще обнаружилось (может показалось?) — если зарегистрировать IBProvider где нибудь в дебрях несистемного раздела «D:\Users\Dima\Work…», то «MSSQL Management Studio» отказывается создавать Linked Server. А если установить в Program Files — то все работает нормально.

Так что — все только через инсталлятор и в «Program Files».

Рекомендую использовать MSI-пакеты с установкой IBProvider-a. Цивилизованная, раздельная установка для 32-битного и 64-битного варианта. Кстати, эти пакеты сами создают все записи в реестре, без привлечения DllRegisterServer. И даже предоставляют дополнительные рычаги для этого процесса.

Exe-инсталляторы (созданы с помощью InnoSetup), тоже вполне подходят. Но, думаю — надо от них отказываться уже. Правда пока не знаю как это сделать наиболее безболезненно для пользователей. Надо наверное просто взять и отключить их 1 января 2014 года 🙂

Leave a Comment