Access 365 /Access 2016 2019 数据库中哪些函数功能和属性被SandBox Mode沙箱模式阻止或屏蔽

Access 365 /Access 2016 2019 数据库中哪些函数功能和属性被SandBox Mode沙箱模式阻止或屏蔽
最新回答
夏凉浮生

2026-03-02 09:38:52

在Access 365/Access 2016/2019中,沙盒模式(Sandbox Mode)通过限制不安全表达式来增强数据库安全性。以下是沙盒模式阻止或屏蔽的函数和属性的详细分类:

一、被阻止或屏蔽的函数

沙盒模式会阻止以下类型的函数调用,尤其在查询表达式或属性设置中:

  1. 明确被阻止的函数

    Assistance

    ExportNavigationPane

    LoadCustomUI

    SendKeys

    Shell

    API调用相关函数(如通过Declare声明的Windows API函数)

    文件系统操作函数(如FileCopy、Kill、Name等)

    注册表操作函数(如SaveSetting、GetSetting)

    动态数据交换(DDE)函数(如DDEInitiate)

  2. 可能引发错误的函数以下VBA函数在查询或属性中调用时会报错:

    Eval

    CallByName

    DoCmd(部分操作如OpenForm、RunSQL可能受限)

    Environment(获取系统环境变量)

  3. 被完全屏蔽的函数以下函数在沙盒模式下无法使用,即使数据库位于受信任位置:

    API声明函数(如Declare PtrSafe声明的外部函数)

    自动化控制函数(如CreateObject访问非信任COM组件)

    低级系统操作函数(如GetObject访问文件或系统对象)

二、被屏蔽的属性

沙盒模式会阻止访问以下对象属性,尤其是涉及外部资源或系统交互的属性:

  1. Application对象属性

    AutomationSecurity(自动化安全级别)

    Visible(若通过属性设置隐藏Access窗口可能受限)

  2. Form/Report对象属性

    Filter(若包含不安全表达式)

    RecordSource(若SQL查询包含被阻止函数)

    Module(访问窗体或报表模块中的代码)

  3. CurrentDb对象属性

    TableDefs(若尝试修改表结构或访问系统表)

    QueryDefs(若查询定义包含被阻止函数)

三、沙盒模式的安全等级与注册表配置

沙盒模式的行为受注册表项HKEY_LOCAL_MACHINESoftwareMicrosoftOffice16.0Access Connectivity EngineEnginesSandboxMode控制,其值含义如下:

  • 3(默认):最严格模式,阻止所有不安全表达式。

  • 2:允许部分较新函数(如MonthName、StrReverse),但仍阻止高危操作。

  • 1/0:逐渐放宽限制(不推荐,可能引发安全风险)。

四、例外情况与替代方案
  1. 受信任位置将数据库放置在受信任文件夹(如C:Users[用户名]DocumentsAccess)可绕过部分限制,但仍需谨慎启用宏或VBA代码。

  2. 替代函数

    使用纯VBA函数替代被阻止的查询函数(如用Format替代部分字符串操作)。

    通过临时表或存储过程处理复杂逻辑。

  3. 代码签名对数据库模块进行数字签名,可降低沙盒模式的限制强度(需企业级配置)。

五、验证可用函数

沙盒模式下允许的函数包括(但不限于):

  • 字符串处理:Left、Right、Mid、Len、Trim

  • 数学计算:Abs、Round、Int、Sqr

  • 日期函数:Date、Now、DateAdd、DateDiff

  • 聚合函数:Sum、Avg、Count、Max、Min

总结

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

Access Sandbox Mode Functions
。