2026-03-02 09:38:52
在Access 365/Access 2016/2019中,沙盒模式(Sandbox Mode)通过限制不安全表达式来增强数据库安全性。以下是沙盒模式阻止或屏蔽的函数和属性的详细分类:
一、被阻止或屏蔽的函数沙盒模式会阻止以下类型的函数调用,尤其在查询表达式或属性设置中:
明确被阻止的函数
Assistance
ExportNavigationPane
LoadCustomUI
SendKeys
Shell
API调用相关函数(如通过Declare声明的Windows API函数)
文件系统操作函数(如FileCopy、Kill、Name等)
注册表操作函数(如SaveSetting、GetSetting)
动态数据交换(DDE)函数(如DDEInitiate)
可能引发错误的函数以下VBA函数在查询或属性中调用时会报错:
Eval
CallByName
DoCmd(部分操作如OpenForm、RunSQL可能受限)
Environment(获取系统环境变量)

被完全屏蔽的函数以下函数在沙盒模式下无法使用,即使数据库位于受信任位置:
API声明函数(如Declare PtrSafe声明的外部函数)
自动化控制函数(如CreateObject访问非信任COM组件)
低级系统操作函数(如GetObject访问文件或系统对象)

沙盒模式会阻止访问以下对象属性,尤其是涉及外部资源或系统交互的属性:
Application对象属性
AutomationSecurity(自动化安全级别)
Visible(若通过属性设置隐藏Access窗口可能受限)
Form/Report对象属性
Filter(若包含不安全表达式)
RecordSource(若SQL查询包含被阻止函数)
Module(访问窗体或报表模块中的代码)
CurrentDb对象属性
TableDefs(若尝试修改表结构或访问系统表)
QueryDefs(若查询定义包含被阻止函数)

沙盒模式的行为受注册表项HKEY_LOCAL_MACHINESoftwareMicrosoftOffice16.0Access Connectivity EngineEnginesSandboxMode控制,其值含义如下:
3(默认):最严格模式,阻止所有不安全表达式。
2:允许部分较新函数(如MonthName、StrReverse),但仍阻止高危操作。
1/0:逐渐放宽限制(不推荐,可能引发安全风险)。

受信任位置将数据库放置在受信任文件夹(如C:Users[用户名]DocumentsAccess)可绕过部分限制,但仍需谨慎启用宏或VBA代码。
替代函数
使用纯VBA函数替代被阻止的查询函数(如用Format替代部分字符串操作)。
通过临时表或存储过程处理复杂逻辑。
代码签名对数据库模块进行数字签名,可降低沙盒模式的限制强度(需企业级配置)。
沙盒模式下允许的函数包括(但不限于):
字符串处理:Left、Right、Mid、Len、Trim
数学计算:Abs、Round、Int、Sqr
日期函数:Date、Now、DateAdd、DateDiff
聚合函数:Sum、Avg、Count、Max、Min

沙盒模式通过阻止高危函数和属性来保护Access数据库安全,但可能影响部分功能实现。建议通过受信任位置、代码重构或注册表调整(需谨慎)平衡安全性与功能性。如需完整列表,可参考微软官方文档: