沙箱ActiveX组件

本文关键字:组件 ActiveX 沙箱 | 更新日期: 2023-09-27 17:49:41

有没有人对如何在windows应用程序中沙箱ActiveX组件有任何想法,以便如果它崩溃它不会带来整个应用程序?我可以看到谷歌正在用Flash做这件事。怎么做呢?

我认为他们托管它的进程,然后只显示UI只在应用程序中。这可能吗?

我有兴趣在c#窗口应用程序上做这个

沙箱ActiveX组件

我最初的想法是这是不可能的。Chrome Flash沙盒是Google和Adobe的合资项目,Adobe需要做很多工作才能将Flash插件与沙盒关联起来:

编辑

查看这个答案:检测应用程序挂起与。net中的ActiveX控件

它可能是你正在寻找的。

另外,如果你依赖于ActiveX的UI,你可能想看看这个:我如何将一个应用程序窗口作为属于另一个进程的窗口的子窗口?

免责声明:我自己没有这样做,所以-任何人-请随时纠正我的假设。

Google Chrome是这样设置的,无论它是什么插件,如果它崩溃了,它不会采取整个过程。事实上,他们根本不使用ActiveX版本的Flash……他们使用NPAPI版本,和Firefox和Safari一样。

Chrome使用的技巧,我认为你也可以使用,但可能是棘手的,是他们在一个单独的进程中启动插件。Firefox 4已经开始做同样的事情,事实上(如果你在你的任务栏中查看,你会看到一个插件容器。exe进程,当Firefox正在运行flash;Chrome只是启动更多的Chrome .exe进程)。因为它是一个独立的进程,它可以崩溃,它不会带走你的应用程序;您只需检测到另一个进程现在已经消失,并采取相应的行动。

无论如何,我从来没有在c#中做过多个过程,但我认为这是可能的。这是最常见的"沙盒"方法。我可以在c++中做到这一点(并且已经做到了),但c#可能更棘手。