gpt4 book ai didi

C# - 获取程序集的所有 'usings'

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:13 24 4
gpt4 key购买 nike

我写了一个插件系统,插件主机需要知道每个模块有哪些“用途”。

主要思想是限制插件在代码中可以使用的内容,以评估其安全级别。示例:插件无法操作磁盘或网络,那么我正在考虑通过“使用”或加载的 dll 进行限制。

我搜索了如何获取插件的“已加载模块”,但我没有找到 System.IO 的引用或任何可以提供帮助的 dll。

然后我查看 assembly.Get***()(模块/字段/...)

也许一个例子可以帮助:插件'A'入口点.cs

using System.Collections.Generic; <--- is allowed
using System.IO; <--- it is not allowed
using System.Net; <--- it is not allowed
.... Declare a namsespace, classes and other... AND i used a streamwriter

我需要知道该插件是否使用了 System.Net 或其他禁止引用。

非常感谢(非常感谢所有可能性)

编辑:1) Assembly.GetReferencedAssemblies 不工作,一些 DLL 有 Allowed 和 Prohibeted 引用

2) 可以使用一些管理此访问的“帮助库”来完成磁盘/网络访问。

3) 对于沙盒解决方案:我看到了这个,但主要问题是我有一个类似虚拟磁盘的东西,当用户要求列出一个目录时,这个操作会询问服务器“这个用户在这个目录中有什么文件”文件夹?'然后该服务器将收集数据库中的所有文件并返回该列表。当必须读取/写入文件时,此修改需要同步。与可以读取此文件的所有其他计算机。网络操作特定于一系列“虚拟合作伙伴”,但没有完整的 VPN 解决方案。

最佳答案

这是不可能的。 using 只是一个语法帮助程序,可以让您免于完全限定您想要从另一个命名空间使用的所有内容。

如果您想运行一段具有受限权限的代码,那么您可以通过将其加载到具有有限信任的单独应用程序域中来实现。 Here's an article that may help.

关于C# - 获取程序集的所有 'usings',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com