Почему саморегистрация плоха? - PullRequest
1 голос
/ 14 января 2009

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

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

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 14 января 2009

Насколько этот пункт:

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

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

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

0 голосов
/ 14 января 2009

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

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

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

0 голосов
/ 14 января 2009

Товар

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

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

...