Import IronPython在使用后禁用导入

Import IronPython在使用后禁用导入,import,ironpython,Import,Ironpython,在我使用完导入后,有没有办法禁用它?我使用IronPython作为脚本引擎,我不希望用户能够导入任何内容。这可以通过使用setfenv在LuaInterface完成: luanet.load_assembly("System.Windows.Forms") luanet.load_assembly("System.Drawing") Form=luanet.import_type("System.Windows.Forms.Form") -- Only allow the use of th

在我使用完导入后,有没有办法禁用它?我使用IronPython作为脚本引擎,我不希望用户能够导入任何内容。这可以通过使用setfenv在LuaInterface完成:

luanet.load_assembly("System.Windows.Forms")
luanet.load_assembly("System.Drawing")

Form=luanet.import_type("System.Windows.Forms.Form")

-- Only allow the use of the form class

local env = { Form = _G.Form }

setfenv(1, env)
或者在解析脚本文件之前将导入函数设置为nil:

luanet.load_assembly = nil
luanet.import_type = nil

这在IronPython中是可能的吗?

一个选项是预先检查您正在执行的脚本,并禁止任何包含import语句或来自。。。导入语句

foreach(line in script) {
    if(line.TrimeStart().StartsWith("import") || line.TrimeStart().StartsWith("from") {
        throw ...;
    }
}

它不是万无一失的——导入仍然是一个问题,但它将涵盖绝大多数情况。

您可以创建导入函数的挂钩,并以任何方式处理用户导入

在这种情况下,您可以为钩子获得的任何导入返回null

这里解释了如何执行此操作: