Чем плоха саморегистрация?
-
22-07-2019 - |
Вопрос
Если предположить, что самостоятельная регистрация используется для установки компонентов как часть более крупной программы установки, почему самостоятельная регистрация плоха?Например.саморегистрирующиеся пользовательские элементы управления vb, capicom или что-то еще.Я признаю, что саморегистрация, вероятно, не так безопасна в случае DLL, которую вы написали сами, но я не обсуждаю это.
Списки MSDN некоторые причины почему саморегистрация плоха, воспроизведено здесь:
Хорошо, эта причина имеет смысл.
Игнорируя тот факт, что реклама важна только для определенных типов программных клиентов, я не понимаю, почему это проблема.Рекламировать нужно только основное приложение, а не его компоненты.
Ну и что?Предоставление каждому пользователю доступа к «общим» компонентам — неплохая вещь, если только на машине не много пользователей, и в этом случае это еще не конец света.
Я определенно могу в это поверить, за исключением случаев с dll, написанными Microsoft (в них могут быть ошибки, но я не считаю, что доверять им неразумно).А в случае tlbs и ocxs, сгенерированных программным обеспечением, ошибки кодирования кажутся маловероятными.
В случае с dll, созданными программами, маловероятно, что из-за этого произойдет сбой саморегистрации, но добавление регистрационных ключей вручную могло бы сработать.Я бы предпочел, чтобы моя саморегистрация возвращала ошибку о том, что мне не хватает DLL.
Я уверен, что это вызовет пламя :/
Редактировать:Вычеркнуты аргументы, которые, по моему мнению, действительно имеют значение (на основе ответов пользователей и моих собственных).
Решение
Что касается этого пункта:
Самостоятельная регистрация не поддерживает должным образом ключи для каждого пользователя.
Ну и что?Предоставить каждому пользователю доступ к «общим» компонентам-неплохо, если у вас нет много пользователей на машине, и в этом случае это все еще не в конце концов.
Дело не только в том, сколько пользователей на компьютере, но и в том, какие у них разрешения.Если он не является администратором, у пользователя вряд ли будет разрешение на обновление. HKEY_LOCAL_MACHINE
часть реестра.
Другие советы
Элемент
Самостоятельная регистрация dll может ссылаться на другие библиотеки
применяется, когда вы пытаетесь зарегистрировать dll, но установщик еще не скопировал / не установил другую dll, необходимую для вашей функции регистрации.
Я бы добавил один потенциальный "gotcha" с которыми я столкнулся (с автоматически сгенерированным кодом саморегистрации для объектов MS COM):
Самостоятельная регистрация запускает исполняемый файл со всем, что влечет за собой / требует. Так, например, если ваш компонент прямо или косвенно регистрирует тот факт, что он был активирован (возможно, для ведения журнала безопасности, если предполагается, что компонент работает только в очень определенных точках или в очень определенных контекстах, или в координации с другими приложениями), регистрация будет активацией (если вы не будете осторожны при входе в систему). Это также может быть интересно, если в ваших журналах записывается, скажем, контекст, в котором был использован компонент, и в этом случае у вас будет любой унаследованный контекст, инициирующий саморегистрацию.
В большинстве случаев не имеет большого значения, но иногда это может вызвать некоторую путаницу. Я бы добавил это в список причин, почему это, вероятно, не является предпочтительным.