我在用 Windows 资源管理器覆盖任何 .exe 时遇到问题(拖放或复制粘贴),我收到错误消息:“无法完成操作,因为文件夹或其中的文件已在另一个程序中打开”。我使用 sysinternal 工具检查谁持有所述文件,结果是系统进程。
假设我有以下文件结构 rootfolder\a.exe rootfolder\someotherfolder\a.exe
1-如果我打开 Windows 资源管理器进入根文件夹并将 a.exe 拖放到其他文件夹中,则其他文件夹中的 a.exe 会被正确覆盖。
2-如果我同时打开两个 Windows 资源管理器实例,一个在根文件夹中,一个在其他文件夹中,然后我将 a.exe 拖放到另一个 a.exe 上,我会收到错误消息。
现在奇怪的是,如果我要关闭其他文件夹并尝试重复步骤 1,它会失败并显示相同的错误消息。系统会在文件上保留句柄几秒钟,直到我关闭文件夹。
我尝试关闭索引服务,禁用 UAC,禁用防病毒软件。我在域上运行 Windows 7 64 位,我的用户是我机器的管理员,当我查看所述文件的权限时,它显示我的用户可以完全控制它。我有点不知道该怎么做才能解决这个问题。
答案1
答案2
当你将文件拖放到 exe 文件上时,你正在告诉 Explorer 启动目标执行程序文件并打开拖拽执行文件。这是默认行为。但您的系统并非如此。
我猜是第三方程序。您的系统上安装了任何复制/拖放处理程序吗?
答案3
给出程序解锁者一枪。不仅是自由的并兼容所有 Windows 版本从 2000 到 7,它允许您从进程中“解锁”文件句柄没有终止他们(当然,您也可以选择后者)。
这是迄今为止我发现的唯一允许您执行此操作的实用程序(无需终止进程或重新启动计算机即可解锁文件句柄)。
至于为什么会发生这种情况,可能是 Windows 试图缓存应用程序图标,或者是外部进程(即防病毒程序)扫描文件。Unlocker 会告诉您哪个进程锁定了文件,因此它应该可以让您了解为什么会发生这种情况。