2010-05-10 23 views
4

我有一个程序可以通过使用Microsoft扩展框架的插件进行扩展。 但我不希望不信任的来源给出可能不安全的插件。 所以我想签署插件(也许用Visual Studio的内置签名)并检查插件在程序启动时是否可信。C#,MEF - 签署可信插件以减少滥用行为

我没有找到一种方法来检查C#中的DLL签名。还有一个问题,我用一个DirectoryCatalog加载插件。无法分辨哪个插件来自哪个文件。任何人都知道如何做到这一点?

感谢您的帮助, 商标

回答

3

您将无法使用DirectoryCatalog。您需要根据自己是否正确签名来自行筛选程序集。您可以遍历目录中的文件,并为每个文件调用AssemblyName.GetAssemblyName。然后查看AssemblyName的KeyPair属性,以确定程序集是否使用您信任的键签名。如果是,则为该类创建一个AssemblyCatalog,并将其添加到您将传递到容器的AggregateCatalog

这里是一个博客文章,举例说明如何做到这一点:How To Control Who Can Write Extensions For Your MEF Application