2

После долгих исследований я должен спросить:

  • Есть ли способ получить список папок, а не файлов, и, возможно, их пути, которые открыты в Windows 7?

Я хотел бы получить папки из файловой системы, а не из окон приложения.

Я попытался SysInternal ProcessExplorer, но безуспешно. Самое близкое, что я получил, - это снимок экрана всплывающего окна панели задач для Windows Explorer.

1 ответ1

1

Вы можете использовать приложение Handle, а затем отфильтровать применимые результаты, используя команду Find, чтобы указать "файлы" для типов объектов, как некоторые из приведенных ниже примеров.

Вы можете масштабировать эти методы еще больше, чтобы удовлетворить ваши потребности, включая и исключая определенные строковые шаблоны, чтобы отображать только типы объектов папок и исключать определенные расширения файлов.


Примеры синтаксиса

  1. Ниже будут показаны только результаты, содержащие строку "file", которые включают начальный и конечный пробел до и после запятых рядом с символами "files"

    handle64 -a | FIND /I " file "


Сужая это больше

Вы можете дополнительно добавить дополнительные фильтры команд FIND чтобы сузить результаты еще больше, в зависимости от ваших критериев, и направить каждую команду FIND к следующей команде FIND чтобы вернуть включенные и исключенные совпадающие строки.

  • FIND /I "<string>": означает игнорирование чувствительности к регистру символов и отображение результатов, содержащих только определенную совпадающую строку.
  • FIND /I /V "<string>": при добавлении ключа /V исключаются все строки, содержащие конкретную совпадающую строку.

  1. Ниже будут показаны только результаты, содержащие строку "file" (как в предыдущем примере), а затем эти результаты будут переданы следующей команде FIND чтобы затем показать только оставшиеся результаты, содержащие символы «:\» (двоеточие и обратный слеш).

    handle64 -a | FIND /I " file " | FIND /I ":\"

  2. Ниже будут показаны только результаты, содержащие строку "file", и те результаты, которые передаются в следующую команду FIND а затем эти результаты передаются в следующую команду find с ключом /V чтобы исключить и не показать результаты, соответствующие этому шаблону.

    handle64 -a | FIND /I " file " | FIND /I ":\" | FIND /I /V "C:\Windows"


Масштабирование и другие инструменты

Вы можете продолжать масштабирование применимых команд, передавая одну за другой по очереди, чтобы выполнить дальнейшие исключения и т.д., Например, исключая расширения файлов «.bin» и т.д., Пока не получите желаемые результаты, которые удовлетворяют необходимым критериям.

Вероятно, вы могли бы использовать PowerShell и / или FINDSTR, чтобы сделать это более эффективно, но у меня нет времени, чтобы провести кучу тестирования прямо сейчас, поэтому я решил предложить вам этот быстрый метод, который может удовлетворить ваши потребности.


Справиться

Вступление

Задумывались ли вы, какая программа имеет определенный файл или каталог открыт? Теперь вы можете узнать. Дескриптор - это утилита, которая отображает информацию об открытых дескрипторах для любого процесса в системе. Вы можете использовать его для просмотра программ, у которых открыт файл, или для просмотра типов объектов и имен всех дескрипторов программы.

Вы также можете получить версию этой программы, Process Explorer, с графическим интерфейсом, здесь, на Sysinternals.

Монтаж

Вы запускаете Handle, набирая "handle". У вас должны быть права администратора для запуска Handle.

использование

Дескриптор предназначен для поиска открытых ссылок на файлы, поэтому, если вы не укажете какие-либо параметры командной строки, он перечислит значения всех дескрипторов в системе, которые ссылаются на открытые файлы, и имена файлов. Также требуется несколько параметров, которые изменяют это поведение.

usage: handle [[-a] [-u] | [-c <handle> [-l] [-y]] | [-s]] [-p <processname>|
<pid>> [name]

-a    Dump information about all types of handles, not just those that refer
      to files. Other types include ports, Registry keys, synchronization        
      primitives, threads, and processes.
-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.
-l    Dump the sizes of pagefile-backed sections.
-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    Instead of examining all the handles in the system, this parameter
      narrows Handle's scan to those processes that begin with the name 
      process. Thus:

handle -p exp

      would dump the open files for all processes that start with "exp", 
      which would include Explorer.
name  This parameter is present so that you can direct Handle to search
      for references to an object with a particular name.

      For example, if you wanted to know which process (if any) has
      "c:\windows\system32" open you could type:

      handle windows\system

      The name match is case-insensitive and the fragment specified can be
      anywhere in the paths you are interested in.

Ручка вывода

Когда не в режиме поиска (включен путем указания фрагмента имени в качестве параметра), Handle делит свой вывод на разделы для каждого процесса, для которого он печатает информацию дескриптора. Пунктирные линии используются в качестве разделителя, непосредственно под которым вы увидите имя процесса и его идентификатор процесса (PID). Ниже имени процесса перечислены значения дескриптора (в шестнадцатеричном формате), тип объекта, с которым связан дескриптор, и имя объекта, если он есть.

В режиме поиска "Ручка" печатает имена процессов и идентификаторы, перечисленные слева, а названия объектов, которые имели совпадение, - справа.

Скачать дескриптор

источник


Дополнительные ресурсы

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