You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Access VBA运行WScript.Shell.run时报Permission Denied错误

问题成因
  • 文件/目录权限不匹配:同事的Windows用户账户对C:\Support\Masters\Access\Policy\Batch目录没有读取权限,或对PolicyRename.bat文件没有执行权限,多数企业设备会默认限制普通用户对C盘非公共目录的执行权限。
  • WScript.Shell组件被拦截:企业组策略禁用了VBA调用WScript.Shell对象的权限,部分终端安全软件也会默认拦截Office程序调用脚本宿主对象执行外部程序的行为。
  • 批处理内部操作权限不足:PolicyRename.bat内部包含的操作(例如修改受保护目录的文件、写入注册表、调用其他受限程序)需要更高系统权限,普通权限启动的Access无法向批处理传递对应权限。
  • 路径映射异常:你本地的C:\Support路径为本地可用目录,但同事设备上该路径不存在,或是未完成身份校验的网络共享路径,也会触发权限类报错。
  • Office信任中心限制:同事的Access信任中心未将当前Access文件所在目录加入信任位置,或宏权限设置为禁用所有宏,VBA的高危操作会被直接拦截。
排查与解决方法
  • 验证基础路径权限:让同事直接在资源管理器访问C:\Support\Masters\Access\Policy\Batch目录,双击运行PolicyRename.bat,如果直接运行也报错,说明是文件或目录权限问题。右键对应目录→属性→安全,给同事的账户添加「读取和执行」「列出文件夹内容」「读取」权限即可。
  • 验证WScript.Shell组件可用性:在同事的Access中运行如下测试代码:
Sub TestWshAvailable()
    Dim wsh As Object
    Set wsh = CreateObject("WScript.Shell")
    ' 调用系统自带的记事本验证调用权限
    wsh.Run "notepad.exe", 1, True
End Sub

如果该测试代码也报权限错误,说明组策略或安全软件拦截了WScript.Shell调用,可联系IT管理员解除对应限制,或将Access程序加入安全软件白名单。

  • 提升Access运行权限:右键Access快捷方式→选择「以管理员身份运行」,再执行原VBA代码,如果运行正常说明是普通账户权限不足导致。可根据批处理的操作需求固定给Access设置管理员启动权限,或调整批处理内部操作的目标路径为普通用户默认可访问的目录。
  • 调整Office信任中心设置:打开Access→文件→选项→信任中心→信任中心设置→受信任位置,将当前Access文件所在的文件夹加入受信任位置,同时在宏设置中选择适合的权限等级,确保VBA代码可以正常运行。
  • 调整批处理存储路径:如果企业默认限制了C盘根目录的操作权限,可以将PolicyRename.bat和相关依赖文件迁移到%AppData%、用户桌面等普通用户默认拥有完全权限的目录,修改VBA代码中的strCommand参数为对应路径即可。

内容的提问来源于stack exchange,提问作者rwoj67

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:27:00