ActiveX 控件版本控制和签名

Posted

技术标签:

【中文标题】ActiveX 控件版本控制和签名【英文标题】:ActiveX control versioning and signing 【发布时间】:2011-11-02 12:20:28 【问题描述】:

我制作了一个 ActiveX 控件,打包为 cab 并将它放在我的 Web 服务器中。 驾驶室使用虚拟签名进行数字签名。 在客户端计算机上,在“C:\Windows\Downloaded Program Files”中,我可以找到从 cab 中提取的 dll 和 osd 文件。 现在我买了一个真正的证书并用它在服务器上签署了出租车。 当我以客户端身份登录时,在设置了一些安全设置后,我希望看到一个提示,要求我下载一个名为发布者的 ActiveX 控件。那没有发生。然后我转到“C:\Windows\Downloaded Program Files”,删除了从 cab 中提取的 dll 和 osd 文件,再次以客户端身份登录,然后我确实看到了我期望看到的内容:提示下载我的名字作为发布者的 ActiveX 控件。 我的问题是:为什么我在第一次登录时看不到签名?当然,dll 和 osd 文件已经存在,并且 dll 具有相同的版本,但是驾驶室使用新签名和时间戳这一事实是否意味着什么?还有一个问题——如果驾驶室内的 dll 的版本号比“C:\Windows\Downloaded Program Files”中的版本号更新,那么它会被覆盖吗?

【问题讨论】:

【参考方案1】:

显然,正在检测版本号来决定是否重新下载控件。如果 CAB 的版本号比本地副本的版本号新,则会覆盖“C:\Windows\Downloaded Program Files”中的版本号。

【讨论】:

驾驶室版本由什么决定?我怎么能看到它?和里面的dll版本一样吗?是不是html中object标签的code base属性中指定的版本? 顺便说一下,我看到当我将代码库属性中的版本更改为“-1,-1,-1,-1”或任何大于dll版本的版本时在客户端机器中,每次刷新客户端页面时都会出现提示。当codebase属性中的版本等于或更低时,不下载cab,没有提示。所以我想看看我是否得到了工作流程:IE将客户端机器中的dll版本与html页面中指定的版本进行比较。如果客户端的版本没有更新,则从服务器下载驾驶室。否则,使用客户端的 dll。对吗?

以上是关于ActiveX 控件版本控制和签名的主要内容,如果未能解决你的问题,请参考以下文章

浏览器提示已经阻止此站点以不安全的方式使用ActiveX 控件,怎么解决?

Microsoft Excel ActiveX 控件已禁用?

将控件(ActiveX或非ActiveX)添加到图表(Excel VBA)

无法注册Flash player 的ActiveX控件啥意思 怎么解决?

如何获得嵌入式 IE ActiveX 控件的版本?

对用作 ActiveX 控件的 .NET DLL 进行签名