Lotusscript中使用UNC路径调用Dir$报“非法函数调用”问题排查
问题:LotusScript Dir$()调用UNC路径报“非法函数调用”错误
问题场景
在测试环境中,使用LotusScript的Dir$()函数调用UNC路径(\\serverName\shareName\*)时,触发“非法函数调用”错误。
排查过程
- 在命令提示符执行命令
dir \\serverName\shareName\dirName,得到系统错误提示:
此时无法再与远程计算机建立连接,因为该计算机已接受最大数量的连接。
- 更换其他共享路径测试,未出现同类问题,确认问题仅针对目标共享服务器。
解决方案
服务器端调整
- 修改最大并发连接数
- Windows服务器可通过组策略:依次进入「计算机配置→管理模板→网络→Lanman服务器」,修改“同时可连接的最大数量”参数,调高连接上限;
- 或通过注册表修改:定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters,调整MaxConnections键值(设置为0表示无限制,修改后需重启服务器生效)。
- 清理闲置连接会话
- 在目标服务器的命令提示符执行
net session,查看当前所有客户端连接; - 对闲置会话执行
net session \\<客户端主机名> /delete,释放占用的连接数。
- 在目标服务器的命令提示符执行
LotusScript代码优化
- 在调用
Dir$()前,通过Windows API(如WNetAddConnection2)提前验证UNC路径的连通性,捕获连接失败的情况,避免触发“非法函数调用”错误; - 完成文件操作后,调用
WNetCancelConnection2释放UNC路径连接,减少会话占用。
内容的提问来源于stack exchange,提问作者Rich7716
相关产品推荐
相关产品推荐

