我正在尝试使用 Sysinternals Handle 软件关闭 Windows 中锁定文件的句柄 (http://technet.microsoft.com/en-us/sysinternals/bb896655)。
首先我搜索打开的句柄:
handle.exe "C:\Temp"
它向我发出了以下信息:
Far.exe pid:1144 类型:文件 2E8:C:\Temp
Far.exe pid:1144 类型:文件 3A8:C:\Temp
接下来,我使用 -c 参数运行 handle.exe。但是,无论我输入哪个数字,它都不会执行任何操作。我尝试了以下两种方法:1144、2E8、3A8 和十六进制的 1144(478),因为软件帮助说它接受十六进制的 PID。无论我输入什么,它都只会发出以下内容:
Handle v3.46
Copyright (C) 1997-2011 Mark Russinovich
Sysinternals - www.sysinternals.com
usage: handle [[-a [-l]] [-u] | [-c <handle> [-y]] | [-s]] [-p <process>|<pid>] [name]
-a Dump all handle information.
-l Just show pagefile-backed section handles.
-c Closes the specified handle (interpreted as a hexadecimal number).
You must specify the process by its PID.
WARNING: Closing handles can cause application or system instability.
-y Don't prompt for close handle confirmation.
-s Print count of each type of handle open.
-u Show the owning user name when searching for handles.
-p Dump handles belonging to process (partial name accepted).
name Search for handles to objects with <name> (fragment accepted).
No arguments will dump all file references.
我究竟做错了什么?
答案1
看来您还必须指定进程 ID:
handle -c 2e8 -p 1144
答案2
选项语法在竖线之间有 -c,这意味着它是一种可以单独指定的用法。
为了正确,语法图应该是
| -c <handle> [-y] -p <pid> |
这意味着当您指定 -c 时您还必须指定 -p 并且可以指定 -y,并且 -c 需要一个句柄而 -p 需要一个 pid。