【问题标题】:SysInternals Handle not showing my .txt file while it is openSysInternals Handle 在打开时不显示我的 .txt 文件
【发布时间】:2014-03-23 15:22:45
【问题描述】:

我正在编写一个适用于锁定文件的 Windows shell 脚本。为了知道某个文件是否被锁定,我正在测试 SysInternalsHandle* 实用程序,根据其文档:

«Handle 是一个实用程序,用于显示有关打开句柄的信息 系统中的任何进程。你可以用它来查看程序 打开文件»

所以我尝试创建一个简单的.txt 文件:

C:\Windows\system32>echo Foo >> Foo.txt
C:\Windows\system32>notepad Foo.txt

(记事本出现在屏幕上,并带有一个名为 Foo 的新文件。

C:\Windows\system32>handle Foo

Handle v3.51
Copyright (C) 1997-2013 Mark Russinovich
Sysinternals - www.sysinternals.com

No matching handles found.

这里发生了什么?我的文件应该是打开的,记事本应该有一个句柄,但是这一行:

handle -p notepad | grep "Foo"

没有结果。
如何使用 handle 了解我的 Foo.txt 文件是否正在使用中(锁定)?
也许有人可以给我一些handle用法的例子。

【问题讨论】:

  • 记事本是一个简单的程序,将整个文件吞入内存并关闭文件句柄。很容易看到,您可以在记事本允许您编辑文件时删除文件。您需要一个 非常 大的文件才能有足够的时间来启动 Handle。
  • 你是对的,@HansPassant。因此,我需要准确了解在什么情况下,当从命令行 Windows shell 编程时,Handle 将检测到文件为in use,或者该程序检测到的任何内容。因为我想现在一个简单的echo InUse>>c:\Temp\FileLock.lck 是不够的。你能提供一些方向或文件吗?谢谢。
  • 也许你可以问一个新问题? “如何保持从 Windows 命令脚本打开的文件?”
  • 完成,@HarryJohnston:stackoverflow.com/questions/22597647/…

标签: windows shell file-io locking handle


【解决方案1】:

记事本将文件读入内存并关闭句柄,这就是您看不到它打开的原因。您可以在 Process Monitor 跟踪中看到该行为。

【讨论】:

  • 谢谢,@MarkRussinovich。那么,我可以从 Windows 命令行使用什么来以 Handle 检测到的任何方式锁定文件?回声?编辑?更多的?也许是一些 CygWin 命令?
  • @MarkRussinovich - 也许你可以帮助我:stackoverflow.com/questions/30504972/…
【解决方案2】:

一开始我猜你忘记了命令行中的文件扩展名 .txt,第二件事是我猜它只会显示具有独占文件锁的进程,这不是记事本提供的。

【讨论】:

  • 谢谢,@rekire。只要最初的想法是通过Windows命令行锁定文件,而最初的问题是如何使用Handle知道我的文件是否被锁定?,我可以尝试什么简单的测试,然后?
  • 尝试一些打开的word文件或者一些正在使用的dll文件。
猜你喜欢
  • 2019-12-24
  • 1970-01-01
  • 2017-08-26
  • 2018-11-04
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
相关资源
最近更新 更多