Вопрос

Если предположить, что самостоятельная регистрация используется для установки компонентов как часть более крупной программы установки, почему самостоятельная регистрация плоха?Например.саморегистрирующиеся пользовательские элементы управления vb, capicom или что-то еще.Я признаю, что саморегистрация, вероятно, не так безопасна в случае DLL, которую вы написали сами, но я не обсуждаю это.

Списки MSDN некоторые причины почему саморегистрация плоха, воспроизведено здесь:

  • Откат не будет работать должным образом.
    Хорошо, эта причина имеет смысл.

  • Реклама тоже не будет работать.
    Игнорируя тот факт, что реклама важна только для определенных типов программных клиентов, я не понимаю, почему это проблема.Рекламировать нужно только основное приложение, а не его компоненты.

  • Самостоятельная регистрация не поддерживает должным образом ключи для каждого пользователя.
    Ну и что?Предоставление каждому пользователю доступа к «общим» компонентам — неплохая вещь, если только на машине не много пользователей, и в этом случае это еще не конец света.

  • Самостоятельная регистрация более подвержена ошибкам кодирования.
    Я определенно могу в это поверить, за исключением случаев с dll, написанными Microsoft (в них могут быть ошибки, но я не считаю, что доверять им неразумно).А в случае tlbs и ocxs, сгенерированных программным обеспечением, ошибки кодирования кажутся маловероятными.

  • Саморегистрирующиеся библиотеки DLL могут ссылаться на другие библиотеки DLL.
    В случае с dll, созданными программами, маловероятно, что из-за этого произойдет сбой саморегистрации, но добавление регистрационных ключей вручную могло бы сработать.Я бы предпочел, чтобы моя саморегистрация возвращала ошибку о том, что мне не хватает DLL.

    Я уверен, что это вызовет пламя :/

    Редактировать:Вычеркнуты аргументы, которые, по моему мнению, действительно имеют значение (на основе ответов пользователей и моих собственных).

  • Это было полезно?

    Решение

    Что касается этого пункта:

    • Самостоятельная регистрация не поддерживает должным образом ключи для каждого пользователя.

      Ну и что?Предоставить каждому пользователю доступ к «общим» компонентам-неплохо, если у вас нет много пользователей на машине, и в этом случае это все еще не в конце концов.

    Дело не только в том, сколько пользователей на компьютере, но и в том, какие у них разрешения.Если он не является администратором, у пользователя вряд ли будет разрешение на обновление. HKEY_LOCAL_MACHINE часть реестра.

    Другие советы

    Элемент

      

    Самостоятельная регистрация dll может ссылаться на   другие библиотеки

    применяется, когда вы пытаетесь зарегистрировать dll, но установщик еще не скопировал / не установил другую dll, необходимую для вашей функции регистрации.

    Я бы добавил один потенциальный "gotcha" с которыми я столкнулся (с автоматически сгенерированным кодом саморегистрации для объектов MS COM):

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top