-1

在 Windows 7 上,标题中列出的组件默认情况下似乎将“killbit”设置为 COMPAT_EVIL_DONT_LOAD(比较MSDN),也就是说,它们在HKLM\SW\IE\ActiveX Compatibility\{<CLSID>}\中的兼容性标志似乎默认设置为该值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{B09DE715-87C1-11D1-8BE3-0000F8754DA1}]
"Compatibility Flags"=dword:00000400

当我将该值设置为 0 时(这就是Nirsoft 的 ActiveX 兼容性管理器在“激活”组件时所做的),一切正常。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{B09DE715-87C1-11D1-8BE3-0000F8754DA1}]
"Compatibility Flags"=dword:00000000

但这只是一个工作站的 GUI 解决方案。为了部署我们的软件,我需要一个安全稳定的程序(脚本或工具)来与我们的软件一起发布,它不仅将“killbit”设置为 0 或删除注册表项(应该首选哪个程序?),而且检查如果没有必要,什么也不做。优选地,该解决方案将仅通过文件名或文件列表传递,并自行进行所有其他必要的事情。

这是更大的问题开始的地方:

  • 关于 COM 对象,注册表是通过 CLSID 查询的,而不是通过 ocx 文件名(即Windows 注册表中的InProcServer32条目)或(VersionIndependent)ProgID ( HKLM\Software\Classes\CLSID\{<CLSID>}\ ) 查询的。您是否知道一种方法,即查询与 ocx 文件或至少 ProgID 激进相关的 CLSID 的批处理/(PowerShell)脚本/工具/任何方法?
  • 我知道 CLSID 在 Windows 2000 到 7 中是不变的吗?
  • SlayOCX.vbs似乎是一种低级方法,称为SlayOCX.vbs此处描述的组策略,可以用作网络范围的解决方案。但是:这是一个 vbs,在某些环境中关闭。此外,我将最终得到一个由该脚本检查的 CLSID 列表。例如,打包成一批我可能无法让客户的管理员以所描述的方式部署它,而是通过登录脚本或注册表中的 runonce 键或其他方式 - 不是很优雅。那么你有什么建议呢?我更喜欢一个解决方案(一个工具,一个我还不知道的 7 中的新组策略,一个更复杂的脚本,对系统和安全配置问题的依赖更少,......),这使得第一个信息问题变得多余。
4

3 回答 3

0

您想故意让您的客户暴露于安全漏洞吗?我不是律师,但...

根据这篇文章,提到的文件是“支持与您的应用程序一起分发的运行时文件”,您只需更新到最新版本。

另一篇文章详细介绍了必要的步骤(可能是较旧的更新,但它仍然应该让你开始): Clickety

于 2011-02-03T08:47:21.943 回答
0

CLSID 注册表扫描器 (COM/ActiveX)

是我对自己问题的回答。它现在有效,这对我现在很重要。如果不是更好地重写或至少翻新程序,或两者独立,并摆脱旧帽子,那将是一个没有实际意义的讨论。将没有实际意义,因为我不做我们的预算决定。

于 2011-02-08T20:58:52.200 回答
0

除了 Treeview 替换代码或 API 调用之外,这些 OCX 的大多数用法都可以找到。显然,几年前有一些德国评论的 API 代码可供购买,用于树形视图。无论如何,所有这些 OCX 都是 API 调用的包装器。

请参阅我网站上的日历提示页面

mswinsck 有点棘手,我没有那个 URL。但是我确信可以找到可以在 VBA 中很好地工作的 VB6 代码。

博客发布 -旧版本的 MSCOMM32.OCX 设置了“kill bit”标志。 虽然你没有提到这个。

于 2011-02-19T20:49:52.523 回答