本主题列出了“安全场景脚本执行”功能在嵌入式脚本中阻止的所有命令。
MAXScript 命令
如果在“首选项设置”对话框的“安全场景执行”下选择“阻止 MAXScript 系统命令”选项,将阻止执行嵌入式脚本中的以下 MAXScript 命令:
- cfgMgr.deleteKey
- cfgMgr.deleteSection
- cfgMgr.putFloat
- cfgMgr.putFloatArray
- cfgMgr.putInt
- cfgMgr.putIntArray
- cfgMgr.putString
- createOLEObject
- CustomFileStream.deleteStream
- CustomFileStream.setStreamFlags
- CustomFileStream.writeStream
-
CustomFileStream.writeStreamArray
- DOSCommand
- dragAndDrop.globalEnableDragAndDrop
- dragAndDrop.enableDragAndDrop
-
dragAndDrop.dropPackage
-
dragAndDrop.downloadPackage
-
dragAndDrop.DownloadUrlToDisk
- globalVars.remove
- HiddenDOSCommand
- internet.CheckConnection(如果指定 url:)
- LoadDllsFromDir
- macros.load
-
macros.new
- registerOLEInterface
- registry.createKey
- registry.deleteSubKey
- registry.deleteKey
- registry.deleteValue
- registry.flushKey
- registry.setValue
- releaseAllOLEObjects
- releaseOLEObject
-
SceneConverter.LoadConversionPreset
- SetDir
- ShellLaunch
-
systemTools.setEnvVariable
-
windows.postMessage
-
windows.sendMessage
注: 从场景嵌入式脚本执行的脚本或脚本文件中调用时,也会阻止这些命令,例如从 execute()、executeScriptFile()、fileIn()、readValue() 或 readExpr() 调用时。命令包含在脚本化自定义属性中时,也会阻止这些命令。
如果场景嵌入式脚本中有包含 ActiveX 或 dotNet 控件的卷展栏的定义,则将阻止显示该卷展栏。
阻止 macroscript 定义关键字。
在所有情况下,阻止以下文件方法:
-
deleteFile - 阻止除了 3ds Max Temp 目录下的文件以外的所有文件
-
removeDir - 阻止除了 3ds Max Temp 目录下的目录以外的所有目录
-
openEncryptedFile
- encryptScript
- encryptFile
- setFileAttribute
阻止以下仅面向内部的 systemTools 函数:
-
systemTools.AllocateMemory
- systemTools.ReleaseMemory
-
systemTools.GenerateMiniDumpAndContinue
- systemTools.SetMiniDumpContents
- systemTools.PB2_AllNoRefSafePointersTestingDisabled
- systemTools.PB2_AllNoRefSafePointersTestingDisable
-
systemTools.SetBigMiniDumpContents
从 getUserPropVal() 计算的字符串被视为嵌入式脚本,如果包含阻止的命令,将阻止此类字符串。这与 getUserPropVal() 是否位于嵌入式脚本中无关。
特定扩展名或文件阻止的函数
阻止以下文件方法修改受保护的文件和具有受保护扩展名的文件:
-
fopen(始终允许只读打开模式 r、rt 和 rb)
-
openFile(始终允许只读打开模式 r、rt 和 rb)
- createFile
- openLog
-
copyFile
-
renameFile
-
delIniSetting
-
setINISettings
受保护的文件包括:
- 3dsmax.ini
-
PackageContents.xml
- Plugin.ini
- Plugin.UserSettings.ini
- PhotometricLightTemplates.ini
- PhysicalMaterialTemplates.ini
- 通过命令行参数指定的自定义 3dsmax.ini 和 plugin.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.ini 和 Plugin.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 类型,阻止除此以外的所有内容: