gpt4 book ai didi

Windows - 无法强制关闭网络文件句柄 - 无法关闭系统 (Pid 4) 文件句柄

转载 作者:可可西里 更新时间:2023-11-01 13:26:53 24 4
gpt4 key购买 nike

首先,很抱歉问了这么长的问题,但我想提供足够的细节。

概要:

在 Windows 中,似乎无法强制关闭通过网络共享打开的文件句柄。因此,无法移动/重命名/删除通过网络共享打开的文件。我正在使用 Win 7。

问题:

任何人都可以看到我做错了什么,或者有人可以确认这是预期的并且不可能强制关闭系统文件句柄(总是在 pid 4 上,例如与文件的网络共享访问相关的那些句柄)。

背景:

我们有访问日志文件的远程网络客户端用户。我们需要滚动日志文件,以免它变得太大。我们无法滚动日志文件,因为该文件被报告为正在使用中。

重现问题:

0)

以管理员身份执行所有操作

1)

创建一个新目录并分享

2)

在新目录下创建文件

3)

通过文件共享,使用 MS Word 等容易获得文件锁定的内容编辑文件。所以开始/运行然后输入\YourHostName 然后选择您创建的文件共享,然后导航到该文件并使用 Word 对其进行编辑。这是为了模拟远程用户/主机锁定文件。

4)

列出打开的文件句柄,我们可以看到下面2个

C:>处理 C:\Log\MyLockedFile.txt

处理 v3.46版权所有 (C) 1997-2011 Mark RussinovichSysinternals - www.sysinternals.com

系统 pid:4 类型:文件 3E64:C:\Log\MyLockedFile.txt系统 pid:4 类型:文件 5E48:C:\Log\MyLockedFile.txt

5)

尝试关闭文件句柄,这里我们看到关闭尝试失败。

C:>处理-c 3E64 -p 4

处理 v3.46版权所有 (C) 1997-2011 Mark RussinovichSysinternals - www.sysinternals.com

3E64: 文件 (R--) C:\Log\MyLockedFile.txt关闭系统中的句柄 3E64 (PID 4)? (是/否)是错误关闭句柄:句柄无效。

6)

列出网络文件句柄,在这里我们看到打开的文件网络共享。

C:>openfiles/query -v

信息:系统全局标志“维护对象列表”需要 启用以查看本地打开的文件。 请参阅打开文件/?获取更多信息。

通过本地共享点远程打开的文件:

按类型访问的主机名 ID #Locks 打开模式打开文件(路径\可执行文件)14693W7N 67109233 myuser1 Windows 0 写入 + 读取 C:\Log\MyLockedFile.txt14693W7N 495 myuser1 Windows 0 读取 C:\Log\

7)

关闭/断开文件句柄,这里似乎可以工作

C:>openfiles/disconnect/a */OP C:\Log\MyLockedFile.txt

成功:与打开的文件“C:\Log\MyLockedFile.txt”的连接已终止。

8)

系统文件句柄即使在尝试删除后仍处于事件状态。

C:>处理 C:\Log\MyLockedFile.txt

处理 v3.46版权所有 (C) 1997-2011 Mark RussinovichSysinternals - www.sysinternals.com

系统 pid:4 类型:文件 3E64:C:\Log\MyLockedFile.txt

9)

无法移动/重命名文件,因为它仍在使用中

C:>移动 C:\Log\MyLockedFile.txt C:\Log\MyLockedFile.txt.newName该进程无法访问该文件,因为它正被另一个进程使用。 已移动 0 个文件。

最佳答案

只是作为答案发布,因为看到这个问题悬而未决(呵呵,真巧,整整一年?)

首先,关于这个话题有一个非常有趣的讨论 here (关于 NTFS,我想)。如果您阅读上面的链接,您会得到很好的提示,说明为什么有些句柄似乎永远“挂起”打开,以及为什么“强制关闭”不是一个好主意。

“handle -c”给出无效句柄错误的原因可能与在本地和远程运行“handle”有关,即在网络驱动器物理连接到的机器上(?)

为了我自己的目的,在我自己的场景中,我最终强制远程关闭了一个句柄(只是因为我想以一种快速而肮脏的方式关闭它——使用你提到的 Sysinternals 工具,即“psexec”和“handle” "(不需要指定用户和密码,因为我猜我是以管理员身份登录的):

rem To list the open handles
psexec \\someserver -c handle /accepteula some_filename

rem To force close a particular handle
psexec \\someserver -c handle /accepteula -c 3F9C -p 4

但是当再次远程运行 handle 命令时没有给出任何结果(没有打开的句柄),我试图删除的文件夹仍然被锁定。一段时间后(我还尝试使用“net use f:/delete”断开与有问题的网络共享的连接,但无济于事,因为它“正在被一个事件进程访问”)——我发现我自己的本地机器是仍然保留该目录的打开句柄——实际上我远程强制关闭的句柄来 self 自己的机器。我使用 Process Explorer GUI 毫无问题地关闭了它们,这应该等同于在命令提示符下使用“handle”。之后可以删除相关文件夹。

关于Windows - 无法强制关闭网络文件句柄 - 无法关闭系统 (Pid 4) 文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10780276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com