安全场景脚本执行阻止的命令

本主题列出了“安全场景脚本执行”功能在嵌入式脚本中阻止的所有命令。

MAXScript 命令

如果在“首选项设置”对话框的“安全场景执行”下选择“阻止 MAXScript 系统命令”选项,将阻止执行嵌入式脚本中的以下 MAXScript 命令:

注: 从场景嵌入式脚本执行的脚本或脚本文件中调用时,也会阻止这些命令,例如从 execute()executeScriptFile()fileIn()readValue()readExpr() 调用时。命令包含在脚本化自定义属性中时,也会阻止这些命令。

如果场景嵌入式脚本中有包含 ActiveX 或 dotNet 控件的卷展栏的定义,则将阻止显示该卷展栏。

阻止 macroscript 定义关键字。

在所有情况下,阻止以下文件方法:

阻止以下仅面向内部的 systemTools 函数:

getUserPropVal() 计算的字符串被视为嵌入式脚本,如果包含阻止的命令,将阻止此类字符串。这与 getUserPropVal() 是否位于嵌入式脚本中无关。

特定扩展名或文件阻止的函数

阻止以下文件方法修改受保护的文件和具有受保护扩展名的文件:

  • fopen(始终允许只读打开模式 rrtrb
  • openFile(始终允许只读打开模式 rrtrb
  • createFile
  • openLog
  • copyFile
  • renameFile
  • delIniSetting
  • setINISettings
受保护的文件包括:
  • 3dsmax.ini
  • PackageContents.xml
  • Plugin.ini
  • Plugin.UserSettings.ini
  • PhotometricLightTemplates.ini
  • PhysicalMaterialTemplates.ini
  • 通过命令行参数指定的自定义 3dsmax.iniplugin.ini 文件

受保护的扩展名包括:.bashrc、.bat、.bin、.bmf、.bmi、.bms、.cmd、.com、.cpl、.dla、.dlb、.dlc、.dle、.dlf、.dlh、.dli、.dlk、.dll、.dlm、.dln、.dlo、.dlr、.dls、.dlt、.dlu、.dlv、.dlx、.dly、.dlz、.exe、.flt、.gadget、.gup、.inf1、.ins、.inx、.isu、.job、.jse、.lnk、.mcr、.ms、.msc、.mse、.msi、.msp、.mst、.mxs、.mzp、.paf、.pif、.ps1、.py、.pyc、.pyd、.pyo、.pyw、.reg、.res、.rgs、.scr、.sct、.shb、.shs、.u3p、.vb、.vb3、.vbs、.vbscript、.ws、.wsf、.wsh。

注: 3ds Max 先清理文件名并放弃操作系统忽略的字符,然后确定是否阻止文件。例如,放弃任何尾随句点,这样文件前缀“.ms...”被视为“.ms”。

特殊情况文件方法:

  • fileIn - 阻止除了 .ms.mse.mxs 以外所有扩展名的文件
  • executeScriptFile - 阻止除了 .ms.mse.mxs 以外所有扩展名的文件;如果未选中“阻止 Python 脚本”选项,也不阻止 .py.pyw 扩展名的文件。

受保护的文件位置

当“阻止 MAXScript 系统命令”处于启用状态时,任何可以写入文件系统的命令将被阻止访问以下位置(3ds Max 从中加载插件和脚本):

  • 3ds Max 安装目录
  • “User Tools”目录(通常为 C:\Users\<用户>\Autodesk\3ds Max <年份>\User Tools
  • 由“配置用户和系统路径”对话框中的“附加脚本”、“附加启动脚本”和“附加宏”(在 MAXScript 中为 #userScripts#userStartupScripts#userMacros)定义的用户脚本位置。
  • plugin.iniPlugin.usersettings.ini 中定义、启动时使用 -p 命令行选项传递到 3ds Max 或由 ADSK_APPLICATION_PLUGINS 环境变量定义的插件相关目录位置
  • ProgramData 目录(通常为 C:\ProgramData
  • %LOCALAPPDATA%\Autodesk\ApplicationPlugins\ 目录

Python 命令

如果在“首选项设置”对话框的“安全场景执行”下选择“阻止 Python 脚本”选项,将阻止从嵌入式场景脚本调用的所有 Python 命令。

.NET 命令

如果在“首选项设置”对话框的“安全场景执行”下选择“阻止第三方 .NET 代码”选项,将阻止从嵌入式场景脚本运行的所有 .NET Framework 类(包括 .NET 控件),随 3ds Max 插件提供或 3ds Max 使用的类除外。

此外,还阻止 MAXScript 命令 dotNet.loadAssembly()

下面列出允许的 .NET 类型,阻止除此以外的所有内容: