Windows 2008 R2 - 内核(系统进程 PID=4)正在锁定文件和文件夹

Posted

技术标签:

【中文标题】Windows 2008 R2 - 内核(系统进程 PID=4)正在锁定文件和文件夹【英文标题】:Windows 2008 R2 - Kernel (System Process PID=4) is locking files and folders 【发布时间】:2010-12-07 15:13:31 【问题描述】:

Windows 2008 R2 - 内核(系统进程 PID=4)长时间锁定文件和文件夹。 例如,在删除文件时,该文件可能会保持锁定状态 1 分钟或更长时间,然后才会被删除。 在其他情况下,我遇到了无法删除的文件或文件夹。 ProcMon 显示系统进程持有这些资源的句柄几分钟,然后释放它们 我提到的资源都不是系统资源,只有我自己安装并由我的应用程序处理的文件和文件夹。

【问题讨论】:

【参考方案1】:

正如 Dani 在评论中已经提到的那样:

这是 Windows 7 和 Windows Server 2008(可能仅限 64 位版本)中的一个错误。当您禁用 Application Experience 服务时,它会出现。

重新启用此服务已为我解决了此问题。

更多信息 here 为何会导致问题。

似乎相关的其他 SO 问题列表:

Visual Studio output file permissions? Under which circumstances does the System process (PID 4) retain an open file handle?

【讨论】:

+1 不足以回答这个问题 - 这已经折磨了我几年,表现为 Visual Studio 2010 由于文件锁定而无法构建。现在它已经修复了。 在 Windows 10 的情况下,可以按照以下说明找到应用程序体验 answers.microsoft.com/en-us/windows/forum/… @Makis 如果禁用它,Windows 10 上也会发生同样的事情吗?【参考方案2】:

通过共享访问的文件将被系统进程(PID 4)锁定。

尝试打开compmgmt.msc -> 系统工具 -> 共享文件夹 -> 打开文件查看锁定的文件是否列在那里

另请参阅the sysinternals forum 了解复制此内容的方法。 并非所有应用程序在打开文件时都会锁定文件,但 Excel 会...

【讨论】:

谢谢!在尝试了很长一段时间后,找到打开文件的 Excel 进程,结果是共享用户:-) 感谢@janv8000 的回复。我已经尝试过 SysInternals 的 Process Explorer(无法关闭句柄,系统进程正在使用文件),Windows Server 2008 上的 Process Monitor(无骰子)以及其他一些东西来查找锁定它的原因。我不知道共享文件夹下有一个打开文件列表。这甚至显示了谁在远程访问它,所以我可以检查以验证他们是否已完成。谢谢! 这很有趣,我确实花了 3 周时间尝试以多种方式解决这个问题(无需重新启动服务器),你有没有找到一种方法来自动化这个过程?通过 cmd 提示符/powershell 运行它,非常感谢,您的回答绰绰有余 有没有办法防止这种行为? 太棒了!仍然适用于 Windows 2016 Server。事实上,Process Monitor 也无法为我做到这一点。如果 Google 为这些 cmets 编制索引,这对于修复 Sage / PeachTree accounting 2021 升级过程出错至关重要,允许我释放 SUA00021.LCKPT.LCK 以进行删除,Sage 可以启动。【参考方案3】:

在我的例子中,它是通过命令行中的一个简单命令修复的:

net session /delete

希望对你有帮助。

【讨论】:

【参考方案4】:

希望这对其他人有所帮助。

打开窗口运行并启动 mmc.exe

文件 -> 添加或删除管理单元 --> 共享文件夹 --> 本地计算机

选择打开文件向下滚动到目录或文件并右键单击关闭。

您还可以获取已锁定的用户名并转到会话并右键单击 --> 关闭会话。

就我而言,是 MacOS 10.13 保持文件锁处于打开状态... https://support.apple.com/en-us/HT208209

【讨论】:

【参考方案5】:

我在尝试重命名文件夹时遇到了这个问题。在执行重命名时,我不得不停止服务器服务。只是重新启动没有帮助,因为系统进程在服务器服务重新启动后立即重新锁定了文件夹。

【讨论】:

【参考方案6】:

这样做并解决问题:

转到服务并激活应用程序体验。

【讨论】:

值得一提的是,该服务在 Windows 10 中不存在。它存在于预览版中,但发布版本使用不同的方法来管理兼容性。如果您在 Windows 10 中遇到 PID 4(系统内核)锁定文件的问题,这不是原因。【参考方案7】:

尝试了所有这些......

即使复制文件、删除原始文件、将副本重命名为原始名称(全部在服务器上)也会立即告诉我用户已将其锁定。

最后——

使用 Unlocker 清除文件锁。 将文件从服务器复制到桌面。 从服务器上删除了原始文件。 更改了桌面上副本的文件名。 将其重命名为桌面上的原始名称。 将文件放回服务器上的原始位置。

HTH,YMMV... :)

【讨论】:

【参考方案8】:

刚刚在尝试将数据复制到新文件服务器(运行 Windows 2008 R2 的源服务器和目标服务器)时遇到此问题。

发现 PID 4 锁定了文件(如上使用 procexp),但从未在任一服务器上安装 Application Experience,并且该文件未显示在打开文件列表中。

幸运的是,我们在此服务器上使用了计划的卷影副本(以使用户能够自助服务大多数文件恢复)。我只是使用了先前版本选项(可通过包含文件夹的属性获得),选择文件的最新副本并将其复制到其他地方,然后删除并替换问题文件。

您可能需要删除包含文件夹才能删除文件 - 如果明显使用大量文件,这可能是个问题(这对我来说不是问题,因为这是文件夹中唯一的文件)。

对于像我这样的一次性问题(整个服务器驱动器的单个锁定文件),这可以正常工作,不会对服务器或用户造成任何干扰。

鉴于您正在谈论服务器并且 Shadow Copies 正在使用 VSS - 如果您不使用 Shadow Copies,您应该能够从备份中恢复锁定的文件(假设您拥有这些文件)。否则有一些有用的工具,比如 ShadowSpawn (https://github.com/candera/shadowspawn) 可能会有所帮助。

【讨论】:

以上是关于Windows 2008 R2 - 内核(系统进程 PID=4)正在锁定文件和文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致

如何将windows server 2008 R2 的域迁移到windows server 2016

服务器(windows server 2008R2) lsass.exe进程占用超高内存

windows 2008 r2 系统默认80端口被系统占用的处理

windows2008r2 内存使用99%,看不出被哪个进程吃掉

win2008r2系统无限弹出系统关机选项界面