Коротко про регистрацию 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 года 🙂