2013-02-14 64 views
0

在我的項目中,我需要調用許多第三方應用程序。我正以一種安全的方式尋找呼叫方式。以安全模式調用dll

如果我在單獨的過程中調用這些過程,我可以將我的主應用程序與第三方應用程序故障隔離。但我想找到一種方法來調用這些DLL進行隔離。也許我可以在沙箱中調用DLL(但我不知道如何,如果你幫我如何:d)。

我認爲有關.NET應用程序域,但我的項目是由C++寫的,我無法找到的AppDomain在C++中的任何概念。

如果您能幫助我找到實現此目標的有效方法,我將很高興。

+0

你想實現一個通用的dll加載器,它將加載指定的第三方dll,並通過RPC與主機進程交談。不知道這樣的開源程序是否已經存在,但你可能想看看它。 – JosephH 2013-02-14 08:00:53

+0

@JosephH:不知道爲什麼你需要實現一個通用的DLL加載器; Windows就足夠了。 – MSalters 2013-02-14 09:03:32

回答

2

有一個現有的Windows機制,這一點,COM。通過設置CLSCTX_LOCAL_SERVER,COM COM代理進程DllHost.EXE中加載了一個DLL COM組件,並在您的進程中創建了一個COM代理。 DllHost.EXE是你的沙盒;任何錯誤都不會在您的流程中崩潰。

如果第三方組件使用非COM接口,則可能需要自己添加一個精簡COM封裝器。