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

UFT运行网络路径bat遇安全弹窗卡住无法执行后续代码问题咨询

问题根因

你卡代码的核心原因是SystemUtil.Run默认是同步阻塞模式:执行这个方法时,UFT会一直等待被调用的文件完全启动、进入运行状态才会执行下一行代码。而网络路径bat触发的「打开文件-安全警告」弹窗本身就阻断了bat的启动流程,相当于方法永远等不到启动完成的返回信号,自然卡在这里,后面写的弹窗判断逻辑根本没有执行机会,弹窗存续期间UFT主线程被阻塞,你当然也没法手动点暂停停止。

可行解决方案(无需修改系统安全设置、无需将bat迁移到本地)

以下方案都满足你保留bat在网络共享路径、所有用户无需本地下载的要求:

  • 方案1:改用异步方式启动bat,绕开阻塞
    不用默认同步的SystemUtil.Run,调用WScript.Shell的异步执行接口启动bat,方法发起启动动作后立刻返回,不会等bat完全启动,后续的弹窗检测逻辑可以正常执行。参考代码:
    Dim oShell
    Set oShell = CreateObject("WScript.Shell")
    ' 路径两侧加双引号兼容带空格的网络路径,第三个参数False代表不等待进程启动完成,直接往下执行
    oShell.Run Chr(34) & networkFilePath & Chr(34), 1, False
    
    ' 后续弹窗检测逻辑可正常触发
    If Window("Gate Folder").Dialog("Open File - Security Warning").Exist(3) Then
        Window("Gate Folder").Dialog("Open File - Security Warning").WinButton("&Run").Click
    End If
    
  • 方案2:绕开Explorer的安全校验逻辑启动bat,从根源避免弹窗
    这个安全警告是资源管理器(Explorer.exe)在直接启动网络路径的可执行/脚本文件时触发的,你只要不通过Explorer关联的方式直接启动bat就不会弹框,连后续点击运行的逻辑都可以省掉。直接调用本地cmd进程执行网络路径的bat即可:
    ' 启动本地cmd执行网络路径的bat,/c参数代表执行完bat后自动关闭cmd窗口,需要保留窗口排查问题可以换成/k
    SystemUtil.Run "cmd.exe", "/c " & Chr(34) & networkFilePath & Chr(34)
    
    这个方式本质是启动本地的可信进程cmd.exe,由cmd读取网络共享路径上的bat脚本内容执行,不会触发Explorer针对网络文件的启动安全校验。
  • 方案3:提前注册弹窗事件监听
    如果一定要用原生SystemUtil.Run的同步逻辑,可以在执行Run方法前,先通过UFT的事件注册机制,提前绑定安全警告弹窗出现时自动点击「运行」的触发逻辑,监听逻辑是独立于主线程跑的,不会被Run方法的阻塞卡住。这个方案配置比前两个复杂,优先选前两种即可。
注意说明

以上方案都不需要修改系统附件管理器、Internet安全区域的配置,也不需要调整网络盘的信任权限,不会改动VM的系统安全基线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:12:15