沙箱ActiveX组件
有没有人有关于如何在Windows应用程序沙箱ActiveX组件的任何想法,这样,如果它崩溃它不搞垮整个应用程序与它一起?我可以看到Google使用Flash来做这件事。它是如何完成的?沙箱ActiveX组件
我觉得他们举办出来proc和那么只有在应用程序中只显示用户界面。这可能吗?
我很感兴趣,在C#窗口应用程序这样做。
我最初的想法是,这是不可能的。该浏览器的Flash沙箱是谷歌和Adobe之间的合资企业,其中的Adobe不得不做了很多工作to associate the Flash plugin with the sandbox的:
编辑
退房这样的回答:Detecting application hangs with ActiveX controls in .Net
这可能是你是什么寻找。
此外,如果你是依靠从ActiveX的UI,你可能想看看这个:How do I host an application window as a child of a window belonging to another process?
声明:我没有这样做我自己,所以 - 任何人 - 请随时纠正我的假设。
谷歌浏览器设置,但不管它是什么插件,如果它崩溃,它不走下来的全过程。事实上,他们根本不使用Flash的ActiveX版本......他们使用NPAPI版本,与Firefox和Safari相同。
是Chrome浏览器使用,我以为你也可以使用,但可能会非常棘手的伎俩,是他们推出的插件在一个单独的进程。实际上,Firefox 4已经开始做同样的事情(如果你看看你的任务栏,你会在Flash运行时看到Firefox的plugin-container.exe进程; Chrome只会启动更多的chrome.exe进程)。由于这是一个独立的过程,因此它可能会崩溃,并且不会取出您的应用程序;你只是发现其他进程现在已经消失并采取相应的行动。
反正我从来没有做过在C#中的多个进程,但我认为这是可能的。这是“沙盒”最常用的方法,就像AFAIK。我可以用C++(而且)来完成,但C#可能会更棘手。
谢谢西门子。我不知道这是一个协作努力。实际上有意义。 – bobbyalex 2011-04-08 11:31:47
但我们当然在谈论浏览器与Flash的链接,以防止恶意代码。您的需求稍有不同。 – 2011-04-08 11:36:20
你想要的是在你的应用程序的一个窗体中必须有一个特定的UI区域被隔离到一个不同的进程中,同时你的应用程序可以被充分控制,这样你就可以检测到托管窗口后面的进程是“挂”。我对吗? – 2011-04-08 11:44:18