Windows 需要比平时更多的时间来知道可执行文件已关闭或未被使用

Windows 需要比平时更多的时间来知道可执行文件已关闭或未被使用

好吧,我的错,只是我的错。

为了加快旧笔记本电脑的速度,我搜索了注册表调整并在这台计算机上执行了许多调整。Windows 7 Enterprise,64 位。

我发现其中一些调整并不是很好。例如,其中一个调整会导致挂起的应用程序自动关闭。或者其他行为是在内存不足的情况下自动关闭应用程序。

所以我去尝试扭转它们,显然成功了。

但我的电脑仍然有非常奇怪的行为。我试着用一句话来表达:Windows 需要比平时更多的时间来知道可执行文件已被关闭或未被使用。

例如,我有一个批处理文件,它编译一个文件(Delphi),然后压缩它,然后签名,所有这些都是通过旧的 MSDOS 命令批处理完成的。它开始表现得很奇怪,现在复制文件后,我多次收到该文件的访问被拒绝错误。起初我以为是防病毒软件、反恶意软件或 VCS 锁定了新创建的文件,但事实并非如此,我已经从计算机上删除了这些软件,但问题仍然存在。

另一个例子,我将可执行文件“dummy.exe”(即 Delphi 内置的独立可执行文件)放在目录“c:\mydirectory”中。我执行该文件,然后关闭它。然后我尝试删除该文件,Windows 告诉我无法删除,该文件已打开...但实际上没有,我将其关闭。我只需等待几分钟,稍后再试,现在就可以正常工作了。

哪些缺失或更改的注册表项可能导致此行为?

编辑1:

使用 Sysinternal 的句柄,我发现阻止我的文件的进程是 PID:4,即 NT 内核和系统......那么,这里到底发生了什么!?:(

编辑2:

我想我确定问题是什么,但仍然不知道如何修复它。我记得一些“调整”与 UAC 有关。该文件刚刚由以管理员身份运行的 Delphi 创建,如果我以管理员身份运行命令提示符并运行我的批处理以复制/打包/签名,它会顺利运行。当我通过双击批处理文件直接运行批处理时,锁定被触发。

另外,还有另一个奇怪的事情。我新建了一个文件夹,在其中放入一个可执行文件(比如 notepad.exe),然后运行它,然后关闭它,它一直处于锁定状态,无法删除。这不正常,我刚刚检查了其他几台电脑。

编辑3:

我可以确认,只需打开 Windows 资源管理器并让其“查看”我的 exe 和批处理所在的目录(即使我直接从先前打开的 CMD 提示会话运行批处理),就会导致文件被锁定并获取: “该进程无法访问该文件,因为该文件正在被另一个进程使用。” 所以,是 Windows 资源管理器查看了我的文件,导致了此锁定.....但同样,为什么呢?Windows 资源管理器扩展可能是这样吗?我有 Mozy 备份并使用 Tortoise 进行版本控制,两者都在“文件”菜单下安装了项目。

答案1

该问题是由于禁用服务应用程序体验而导致的。再次启用它后,一切都正常。:)

非常感谢您帮助解决此问题。使用“句柄”非常有帮助,因为它帮助我缩小了文件被锁定的确切时间范围。

这是我找到解决这个问题的线索的地方: http://social.msdn.microsoft.com/Forums/office/en-US/40f15ae2-017d-4101-aff8-3981964addb3/error8-unable-to-copy-file-objdebugxxxexe-to-bindebugxxxexe-access-to-the-path?forum=visualstudiogeneral

相关内容