我正在 Windows 7 Ultimate 中处理批处理文件。我使用带有 runme 扩展的 notepad++。
当我运行批处理文件并在之后直接进行一些更改时,我无法保存 .bat 文件,因为 Windows 说它已被另一个进程使用。
所以我需要等待大约 60 秒才能重新保存文件来测试更改。
使用内置记事本时也是如此。
奇怪的是,我运行.bat文件后可以直接删除它,但是保存不起作用。
几个月前,当我处理另一个批处理文件时,一切都正常。
有什么方法可以阻止这种奇怪的行为吗?或者至少有什么方法可以查看哪个进程阻止了该文件?
答案1
解决方案
问题发生在应用经验服务(AeLookupSvc
)已禁用:
如果应用经验服务已被禁用,[Windows] 资源管理器可能会长时间持有可执行文件句柄锁。
- 打开提升的命令提示符。
键入或粘贴以下命令:
sc config "AeLookupSvc" start= demand
重新启动 Windows。
附加信息
应用程序体验服务 (
AELookupSvc
) 是应用程序兼容性管理器的一部分。它在应用程序启动时处理应用程序兼容性查询请求,为以兼容模式运行程序的计算机提供支持,报告兼容性问题,并自动将软件更新应用于程序。应用程序体验服务必须处于活动状态才能应用应用程序兼容性软件更新。您无法自定义此服务;操作系统在内部使用它。[...]
如果禁用应用程序体验服务,该服务将继续运行,但不会对该服务进行任何调用。您无法停止实际进程。
应用程序体验服务配置为手动启动。
来源:威胁与对策指南:系统服务
应用程序兼容性尝试检查 .EXE 文件在被访问时是否需要任何应用程序兼容性填充程序。这会导致系统获取该文件的句柄。系统将查找请求排队到应用经验(
AeLookupSvc
) 服务,但由于该服务被禁用,请求无法及时得到处理,文件 [无法访问],因为它正在使用中。两分钟后,排队请求到应用经验服务超时并被丢弃,释放句柄。