Windows 11中通过批处理执行powercfg /requests显示[PROCESS] Legacy Kernel Caller而非真实数据的问题排查
Windows 11中通过批处理执行powercfg /requests显示[PROCESS] Legacy Kernel Caller而非真实数据的问题排查
我之前也碰到过类似的情况,同一命令在手动打开的管理员CMD里正常输出,放到批处理里就一堆[PROCESS] Legacy Kernel Caller占位符,这种不一致的问题确实挺闹心的。咱们来拆解下可能的原因和对应的解决办法:
可能的原因
Windows 11对批处理的执行上下文做了一些细节调整,当你右键选择“以管理员身份运行”批处理时,它的运行环境和手动打开管理员CMD的环境存在细微差异——比如权限上下文的继承、控制台会话属性等,导致powercfg无法正确枚举到真实的进程电源请求信息,只能返回通用的Legacy Kernel Caller。
解决方案
让批处理调用CMD执行命令
修改批处理内容,通过cmd /c模拟手动打开CMD的执行环境,这样能让powercfg正常获取进程信息:@echo off cmd /c "powercfg /requests" pause保存后再以管理员身份运行,大概率能看到和手动CMD里一致的真实输出。
改用PowerShell脚本替代批处理
Windows 11对PowerShell的上下文支持更稳定,换成PowerShell脚本试试:
创建一个后缀为.ps1的文件,内容如下:powercfg /requests Read-Host "Press Enter to exit"右键选择“以管理员身份运行”这个脚本,应该能正常显示进程的电源请求信息。
调整批处理的存放位置
如果批处理放在系统目录(比如C:\Windows)下,可能触发UAC虚拟化机制导致权限异常。把批处理移到非系统目录(比如桌面、个人文档文件夹),再以管理员身份运行试试。
备注:内容来源于stack exchange,提问作者Artem Russakovskii
相关产品推荐
相关产品推荐

