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

求助:BAT脚本删除AppSwitched下*.exe注册表项失败问题排查

问题分析与解决办法

问题根源

  • REG DELETE不支持通配符匹配子项:你写的REG DELETE "HKEY_USERS\%usersid%\...\*.exe" /f里,*.exe会被当作字面的注册表项名称,系统只会找名叫*.exe的项,而不是所有以.exe结尾的子项,所以找不到目标导致脚本失效。
  • %usersid%变量可能未定义:如果脚本里没提前给%usersid%赋值,这个变量会是空的,导致注册表路径不完整,同样会让命令执行失败。

可行解决方案

方法1:针对当前用户简化处理(推荐)

如果要删除当前登录用户的对应注册表项,直接用HKEY_CURRENT_USER代替HKEY_USERS\%usersid%更方便,不需要获取SID:

@echo off
set "TargetPath=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage\AppSwitched"

:: 遍历所有以.exe结尾的子项并删除
for /f "delims=" %%a in ('reg query "%TargetPath%" 2^>nul ^| findstr /i "\.exe$"') do (
    reg delete "%%a" /f
)

方法2:指定用户SID处理

如果必须针对特定用户的SID操作,先获取用户SID再执行删除:

@echo off
:: 获取当前用户的SID
for /f "tokens=2 delims=," %%a in ('whoami /user /fo csv /nh') do set "usersid=%%~a"

set "TargetPath=HKEY_USERS\%usersid%\Software\Microsoft\Windows\CurrentVersion\Explorer\FeatureUsage\AppSwitched"

:: 遍历并删除所有.exe结尾的子项
for /f "delims=" %%a in ('reg query "%TargetPath%" 2^>nul ^| findstr /i "\.exe$"') do (
    reg delete "%%a" /f
)

代码说明

  • reg query "%TargetPath%":列出目标路径下的所有子项。
  • findstr /i "\.exe$":过滤出名称以.exe结尾的子项($确保匹配的是子项名称的末尾)。
  • 2^>nul:屏蔽reg query找不到路径时的错误提示,避免输出干扰。
  • for /f循环:逐个处理每个匹配到的子项,执行删除命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:05:35