我已经在多个数据库的不同版本中使用MS Access中的Shell命令好几年了。最近,我收到了这个运行时错误5-无效的过程调用或参数的Shell命令,我已经使用了很多年。任何人都可以告诉我,如果有最近的Windows更新或MS Office更新,导致出现这个错误吗?我目前正在使用Office 2010和Office 2013,在多台计算机上的两个版本中收到相同的错误。我甚至尝试创建一个简单的空数据库,直接进入vba窗口,并在即时窗口中尝试了一个简单的Shell命令,如:
Shell "C:\Notepad.bat", vbNormalFocus
Notepad.bat是一个简单的命令:
cmd /C "Notepad.exe"
代码:
Shell "Notepad.exe", vbNormalFocus
确实有效,但是:
Shell "Cmd.exe", vbNormalFocus
在我测试它的每台机器上仍然给出相同的错误5消息。从Windows资源管理器运行批处理文件工作得很好。任何帮助都非常感谢。
2条答案
按热度按时间4c8rllxm1#
经过更多的调查,我偶然发现了我们的网络软件工程师安装的一个新软件,它维护了我们的McAfee保护。上周,有一个名为Adaptive Threat Protection的新应用程序被盲目安装,并设置为检查运行shell命令的MS Office应用程序,特别是CMD类型。这是设置为自动阻止所有这些这样的命令。我终于得出了一个结论,寻找任何最近安装或更新在我的电脑上,碰巧发现一些不同的东西安装在上周的日期范围内。谢谢你的帮助和答案到目前为止。thx1138v2提供的答案是我在发帖之前也尝试过的,但我认为对于我的第一个问题,我试图将我的帖子保持在最低限度。
carvr3hs2#
对于遇到此问题的任何人,Windows Defender也可能是此行为的原因。
您需要检查安全管理员是否配置了Windows Defender的Attack Surface Reduction功能(通过Intune、MEM、GPO...)。
您需要在此处查找的特定规则是阻止所有Office应用程序创建子进程(
d4f940ab-401b-4efc-aadc-ad5f3c50688a
)。您可以在Windows事件查看器、* 应用程序日志 *、Microsoft、Windows、Windows Defender 和 * 操作 * 中查找ID为1121的警告事件,从而轻松验证这一点。
下面是一个屏幕截图(抱歉,是法语):
注意,只显示规则的GUID,而不是全名(GUID列表可以在reference中找到)。
或者,如果您更喜欢使用Powershell: