【问题标题】:Schedule a regsvr32 execution on reboot在重新启动时安排 regsvr32 执行
【发布时间】:2011-06-22 19:05:43
【问题描述】:

我正在 NSIS 上编写一个注册 shell 扩展的安装程序。

在卸载和升级时,由于explorer.exe将旧扩展程序锁定,因此无法删除/覆盖旧扩展程序,并且排除了杀死-重新启动进程。

所以我用不同的名称提取新扩展,标记旧扩展以删除(卸载/升级)并通过 PendingFileRenameOperations 注册表项将新扩展重命名为其原始名称(仅限升级)。到目前为止,这工作正常。

问题是,我必须在启动时注册新的 shell 组件,因为 PendingFileRenameOperations 仅在重新启动时有效。有没有办法在重新启动后安排 regsvr32 操作?

我不能依赖在 RunOnce 上通过 .bat 执行来做到这一点,因为注销/登录也会触发 RunOnce 操作。

提前致谢。

【问题讨论】:

    标签: shell com nsis reboot regsvr32


    【解决方案1】:

    我发现解决此问题的最简单方法是创建一个删除所有相关注册表项和值的注册表脚本。在(卸载)安装程序中运行注册表脚本,并为 COM DLL 安排“启动时删除”。可能有更好的方法来做到这一点,但我还没有找到。

    【讨论】:

    • “相关注册表项”在所有注册为外壳扩展工作的键中?这样做后你可以修改 COM dll 吗?尽管如此,这是一个想法。我会试试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多