1

Я пытаюсь закрыть дескриптор заблокированного файла в Windows с помощью программного обеспечения Sysinternals Handle (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

Затем я запускаю handle.exe с параметром -c. Однако, какой бы номер я ни ввел, он ничего не делает. Я пробовал оба: 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.

Что я делаю неправильно?

2 ответа2

5

Похоже, вы также должны указать идентификатор процесса:

handle -c 2e8 -p 1144
2

Синтаксис опции имеет -c между вертикальными чертами, что означает, что это использование, которое может быть указано само по себе.

Чтобы быть верным, синтаксическая диаграмма должна быть

| -c <handle> [-y] -p <pid> |

это говорит о том, что когда вы указываете -c, вы также должны указать -p и можете указать -y, а -c требует дескриптор, а -p - pid.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .