1

假设自注册用于安装组件作为较大安装程序的一部分,为什么自注册不好?例如自注册 vb 自定义控件或 capicom 或其他。我承认,对于您自己编写的 dll,自行注册可能并不安全,但我不是在讨论这些。

MSDN 列出了自注册不好的几个原因,在此转载:

  • 回滚将无法正常工作。
    好吧,这个理由说得通。

  • 广告也不会起作用。
    忽略广告仅对某些类型的软件客户端很重要这一事实,我不明白为什么这是一个问题。只需要宣传主应用程序,而不是其组件。

  • 自注册不正确支持每用户密钥。
    所以呢?让每个用户都可以访问“通用”组件并不是一件坏事,除非你的机器上有很多用户,在这种情况下它仍然不是世界末日。

  • 自注册更容易受到编码错误的影响。
    我绝对可以相信这一点,除非是 Microsoft 编写的 dll(它们可能有错误,但我不认为信任它们是不合理的)。对于由软件生成的 tlbs 和 ocxs,编码错误似乎不太可能发生。

  • 自注册 dll 可能会链接到其他 dll。
    对于程序生成的 dll,自我注册似乎不太可能因此而失败,但手动添加注册密钥会起作用。我宁愿让我的自我注册返回一个我缺少 dll 的错误。

    我相信这会引起火焰:/

    编辑:划掉我认为真正重要的论点(基于用户的反应和我自己的)。

  • 4

    3 回答 3

    1

    至于这个项目:

    • 自注册不正确支持每用户密钥。

      所以呢?让每个用户都可以访问“通用”组件并不是一件坏事,除非你的机器上有很多用户,在这种情况下它仍然不是世界末日。

    这不仅仅是一台机器上有多少用户的问题,还有他们拥有什么权限的问题。如果不是管理员,用户将不太可能拥有更新HKEY_LOCAL_MACHINE注册表部分的权限。

    于 2009-01-14T17:10:39.723 回答
    0

    项目

    自注册 dll 可能会链接到其他 dll

    当您尝试注册 dll 时适用,但安装程序尚未复制/安装您的注册功能所需的另一个 dll。

    于 2009-01-14T17:35:56.833 回答
    0

    我会添加一个我遇到的潜在“问题”(使用自动生成的 MS COM 对象的自注册代码):

    自注册运行可执行文件,包含所有需要/需要的内容。因此,例如,如果您的组件直接或间接记录它被激活的事实(如果组件只应该在非常特定的点或非常特定的上下文中运行,或者与其他应用程序协调,则可能用于安全日志记录),注册似乎是一种激活(除非您小心记录)。如果您的日志记录了使用组件的上下文,这也可能很有趣,在这种情况下,您将拥有触发自注册的任何继承上下文。

    在大多数情况下没什么大不了的,但有时会引起一些微妙的混乱。我会将它添加到它可能不受欢迎的原因列表中。

    于 2009-01-14T17:51:18.503 回答