只要选择-‘不管用户是否登录都要运行‘,就无法正常执行任务---利用任务计划程序定时运行遇到0xC000013A错误---Airtest遇到系统账户无法与桌面进行交互

 解决方案:

       先说目前可行的解决方案,通过几轮验证和微软社区客服回复,因为目前选择---‘不管用户是否登录都要运行’的任务计划只能在system系统账户运行,且因为Session 0隔离原因,system系统账户的任务无法与桌面交互以获取桌面图片,所以使用图像识别技术来实现自动化控制的Airtest测试脚本无法识别图像以进行,只能回退选择 只在用户登录时运行’ + ‘使用最高权限运行

前情提要:

        我想试着定时某个时间利用任务计划程序执行Airtest脚本,因为可以用命令行执行所以编了个.bat脚本给任务计划程序试图通过定时执行.bat启动Airtest实现目的 |ू・ω・` )

因为想着定时执行可能当时电脑不一定在登录使用,所以设置‘不管用户是否登录都要运行’,但发现在设置不管用户是否登录那里,无论选不储存密码还是存密码,加最高权限都没法运行。且任务计划程序的日志报错为0xC000013A错误

(测试发现只有选‘只在用户登录时运行’ + 当时我正在使用处于登录状态,才能正常到点执行 T_T\")

就在登录状态手动点任务运行都没见黑框框弹出来,也没见执行效果,用显示所有正在执行的任务查看发现任务是运行了但是21秒之后自动消失

查看任务历史记录里的记录和正常启动后手动点停止的记录一样---附情况视频链接

Windows 11 系统任务计划无法定时执行.bat脚本问题_哔哩哔哩_bilibili

于是向微软提问:

为什么在任务计划程序中设置任务的安全选项里,只要选择-不管用户是否登录都要运行,就无法正常执行任务,如果选择的是只在用户登录时运行就ok - Microsoft Community

微软社区客服回复1

感谢您的反馈,了解到您的问题,从您的描述看您的问题和任务计划程序有关,这种情况比较常见,以下是一些可能的原因:

权限问题:当选择"不管用户是否登录都要运行"时,任务会在系统账户下运行,而不是您的用户账户。这可能导致权限不足,无法访问某些资源或执行某些操作。

环境变量:系统账户的环境变量与用户账户不同,可能导致某些依赖特定环境变量的脚本或程序无法正常运行。

交互性:"不管用户是否登录都要运行"的任务无法与桌面交互,这可能导致一些需要用户界面的程序无法正常运行。

超时设置:任务在21秒后自动消失可能是因为任务计划程序认为任务已完成或遇到了某些问题。

网络资源:如果任务需要访问网络资源,在系统账户下可能无法正确连接。

以下是进一步的建议:

  1. 检查脚本或程序:确保您的脚本或程序不依赖于特定用户环境。使用完整的路径引用文件和程序

  2. 日志记录:在脚本或程序中添加详细的日志记录,以便追踪执行过程中的问题。

  3. 延长超时时间:在任务的设置中,尝试增加允许任务运行的最长时间。

  4. 检查事件查看器:查看Windows事件查看器中的应用程序和系统日志,寻找与任务执行相关的错误信息。

  5. 使用PowerShell:如果是运行脚本,考虑使用PowerShell脚本,它通常在系统级别运行时更可靠。

情况排查:

Airtest日志检查

正常运行成功的日志
 正常运行成功的日志
检查定时任务执行后的日志

日志对比后发现通过任务计划程序定时执行的脚本无法获取桌面图像,符合微软客服回复的

交互性:"不管用户是否登录都要运行"的任务无法与桌面交互,这可能导致一些需要用户界面的程序无法正常运行。

并且原因可能是系统账户和用户账户的权限不同

权限问题:当选择"不管用户是否登录都要运行"时,任务会在系统账户下运行,而不是您的用户账户

环境变量经过检查Airtest没有在用户环境变量新增路径,也没有调用全局变量路径的需求

21s超时消失是由于程序执行但没有识别桌面自动退出的,网络也并没有限制脚本运行

于是接下来往system系统账户执行.bat无法与桌面交互方向搜寻...

system系统账户执行.bat无法与桌面交互---win7后Session 0隔离

很轻易地翻到了09年就已经是满天转载的一篇文章Windows服务“允许服务与桌面交互”的使用和修改方法 _服务标记为交互服务-CSDN博客

但发现这方法早在win7/Vista年代之后就失效了WINDOWS服务启动应用程序看不到界面-CSDN社区

而且在尝试过程发现我的.bat运行是不会出现在任务管理器,平时也不在服务里。那么就得先注册服务再试“允许服务与桌面交互”功能这一方法

但。。。也许用.bat注册成服务需要一些技巧,于是先按下不表

 一般都是用exe注册成服务的,现在寻到可能的.bat注册成服务方法windows bat脚本注册成服务_windows将bat变成服务-CSDN博客

然后了解到微软在win7/Vista及以后使用了Session 0隔离处理方式,也就是从那时起服务“允许与桌面交互”功能就成了摆设解决vista和win10在windows服务中交互桌面权限问题:穿透Session 0 隔离_win10 允许服务与桌面交互 为什么不起作用-CSDN博客

但是根据文章中Session 0隔离的是服务与桌面交互,这一功能受用的人群多是想要自己的应用在运行时弹出报错窗口的,这与我脚本需要获取桌面图像一些许偏差,于是决定先再询问微软客服穿透Session 0隔离后是否能帮助获取桌面图像后再行穿透https://answers.microsoft.com/zh-hans/windows/forum/windows_11-wintop_account/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E4%BB%BB/9d2aaa4d-44af-4236-97f8-16232a46cc97

于是目前只能先回退选择 只在用户登录时运行’ + ‘使用最高权限运行’,加电脑息屏时间延长至脚本运行时(有电费和烧屏风险o(╥﹏╥)o)

加试验证Session 0隔离导致脚本运行环境不同于Administrator等用户

        通过验证一个打印输出的脚本同样使用相同的定时配置后,发现这个打印输出的脚本同样不是显示在用户桌面的,符合猜测

以下附图仅为打印输出的脚本的演示,手动运行有弹窗,定时后没弹窗的验证

手动运行bat_test脚本有弹窗

图片
定时会显示正常运行但无弹窗

即可能说明定时任务不在用户环境执行,在Session 0中执行于Session 1等分离开了

图片
bat_test内容

今儿个为了这定时调了三天,期间两天还要准备中元节杀鸭渡祖,累了累了,还得抓紧时间提升自己,不然就得入住畅享豪宅了

再蹲一手微软回复

2024.10.13补充尝试方法

微软没再回复了,悲(ಥ_ಥ) 

有大佬路过给出可行解决方案(1 封私信) 计划任务在不管用户是否登录都要运行时,bat不能正常运行结束? - 知乎 (zhihu.com)

不过我在实现过程中遇到点小问题,特来发图请教

执行前任务配置

输入命令后发现不存在!!!∑(゚Д゚ノ)ノ

同时这次依旧是执行的文章中那个.bat想控制桌面,结果同样是之前说的23秒左右程序识别不到自动结束,也就是说,能执行,但读取不到桌面信息ψ(●—●)

2024.11.2补充方法测试结果失败

测试结果:

        查看日志后发现仍是能正常运行,但无法解锁密码进入桌面进行图像识别。下面开始辩证...

测试过程:

        1、补充方法解释与原链接

方法解释:使用schtask命令语句创建和修改任务

原链接:

提示源头:(1 封私信) 计划任务在不管用户是否登录都要运行时,bat不能正常运行结束? - 知乎

官方schtask:schtasks create | Microsoft Learn

看懂it,16年就写的文章:UFT at和schtasks的比较(计划执行) - alice云学习 - 博客园

使用ru,rp语法:博客园

        2、使用补充方法后, 查看日志发现是能正常运行

使用过程,

但是锁定计算机后并没有解锁进入桌面执行任务,日志如下:

        我又怀疑是不是要手动加个唤醒┐(‘~`;)┌

勾选之后锁屏,查看日志:

        结果仍是卡在第一步进不去桌面(ノ‥)ノ......

        这次是黑屏应该是因为电脑是3分钟自动息屏,如果是3分钟内处于锁定状态并到达预定执行时间,那么会与上一次日志相似,只能读取到锁屏桌面。不过也证明了唤醒选项对于亮屏也没啥用哇

        3、研究schtask语法是否有深意(理论存在)

        几番尝试无果后,我先后去翻找了官方schtask说明,又找到了两篇说明比较清楚的文章。

        查看官方文档后我发现it语句貌似可以追加ru,rp语法指定任务执行账户,而之前任务执行单只能访问黑屏的原因正是无法访问指定账户的桌面,于是我猜想是不是可以加上ru,rp配合it进入桌面?但是官方文档只说是登录到账户后,直到我查到了这篇早在16年的老哥写的现在也是到处被搬运的文章UFT at和schtasks的比较(计划执行) - alice云学习 - 博客园

老哥开头说到的使用schtask命令可以进行交互桌面正合我意,于是通篇全文后我找到其中对it的解释正好是交互方式运行ヽ(゚∀゚)メ(゚∀゚)ノ 

巧了最开始的贴吧大佬也是用的it,所以我觉得理论存在,实践开始(o゚▽゚)o  

        4.it+ru+rp命令融合技

在尝试这里输入密码后,同样是黑屏,但任务显示正常执行只是日志结果仍然是无法解锁,悲ε(┬┬﹏┬┬)3

        截止目前仍没有很好的解决访问桌面的方案,但是,既然有日志,说明起码这样计划程序设置的.bat文件是会跑起来的,起码会动,只是我使用的Airtest的脚本特殊,需要访问桌面(其实是菜啦,根本不会python测试[●´Å`●] ,只能玩玩图形化测试还是IDE的脚本)。

        如果是广大想执行python脚本的同学但发现好像没执行出效果,本文可供思路与一些实践探路参考,可以试试在脚本执行开始就向文件写入日志,等过了测试时间后查看日志就能知道脚本到底有没有被执行过了,应该是的,不过笔者在python测试方面还是小白( ・´ω`・ ),仅提供思路基础波

        感谢路过的野生佬热心提供的思路(^o^)/ ,虽然不是完美适配我的脚本,但我对schtask语法也有了进一步的了解。这系统级的隔离可能得等我有机会学到这方面与这种等级的知识后才能有新的猜想吧。先酱,碎觉咯

记得注重健康哇路过的大佬们

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值