Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как найти процесс который использует файл


Как определить, какой процесс в Windows 10 не дает переименовать, переместить либо удалить файл или папку

Наверное, каждому из пользователей Windows хотя бы раз приходилось иметь дело с так называемыми неудаляемыми файлами и папками. Как правило, причиной невозможности удалить, переместить или хотя бы переименовать такой объект является использование его каким-то процессом, причём необязательно чтобы этот процесс был системным. Это может быть антивирус, архиватор или какой-нибудь редактор.

Обычно в окне с ошибкой прямо указывается, что за процесс препятствует дальнейшим действиям с объектом, но бывает и так, что вместо этого сообщается, что файл или папка открыты в другой программе. Это понятно, но вот в какой именно?

Так вот, определить её очень просто. Во всех популярных версиях Windows (начиная с 7) есть такая встроенная утилита как «Монитор ресурсов», предназначающаяся для контроля использования программных и аппаратных ресурсов. В её поле зрения попадают все процессы, в том числе и зависшие. Она то как раз и подскажет, что именно держит файл или папку.

Нажмите сочетание клавиш Win + R и выполните в открывшемся окошке команду resmon.

Откроется окно монитора ресурсов. Переключитесь в нём на вкладку «ЦП» и введите в поле «Поиск дескрипторов» название объекта, при удалении, перемещении или переименовании которого возникла ошибка. Результаты отобразятся тут же, чуть ниже. В нашем примере удалению папки «Всякая всячина» препятствовал архиватор WinRAR, но в самом окне с описанием ошибки об этом ничего не говорилось.

Вот так всё просто. Кстати, если удерживающий процесс не является критическим, его можно завершить прямо из окна монитора ресурсов.

После этого проблемный файл, папка или другой объект легко смогут быть удалены обычным способом.

Как узнать какие процессы Windows используют файл?

– Автор: Игорь (Администратор)

Иногда, при попытке удалить, переместить или переименовать файл, могут возникать различные окна с системными предупреждениями следующего вида: 

  • "Не удается удалить файл: отказано в доступе" / "Cannot delete file: Access is denied"
  • "Обнаружена проблема общего доступа" / "There has been a sharing violation"
  • "Исходный файл возможно используется" / "The source or destination file may be in use"
  • "Файл используется другой программой или пользователем" / "The file is in use by another program or user".
  • "Убедитесь, что диск не переполнен и не защищен от записи и что файл не используется в настоящее время" / "Make sure the disk is not full or write-protected and that the file is not currently in use"

Одним из лучших способов справиться с заблокированными файлами и каталогами - это воспользоваться бесплатной программой Process Explorer от Microsoft. Программа уже была описана в обзоре Лучшие бесплатные диспетчеры процессов, и вот

Как вы узнаете, какой процесс удерживает файл открытым в Windows?

Просто будьте очень осторожны с закрывающимися ручками; это даже более опасно, чем вы думаете, из-за повторного использования дескриптора - если вы закроете дескриптор файла, и программа откроет что-то еще, этот оригинальный дескриптор файла, который вы закрыли, может быть повторно использован для этого «чего-то еще». А теперь угадайте, что произойдет, если программа продолжит работу, думая, что она работает с файлом (чей дескриптор вы закрыли), когда фактически этот дескриптор файла теперь указывает на что-то другое.

Предположим, у службы поиска есть файл, открытый для индексации, но он временно застрял, и вы хотите удалить файл, поэтому вы (неразумно) принудительно закрываете дескриптор. Служба индекса поиска открывает свой файл журнала, чтобы записать некоторую информацию, и дескриптор удаленного файла повторно используется в качестве дескриптора файла журнала. Завершенная операция, наконец, завершается, и служба индекса поиска, наконец, подходит к закрытию того дескриптора, который у нее был открыт, но в конечном итоге невольно закрывает дескриптор файла журнала.

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

Между тем, другой дескриптор, который вы принудительно закрыли, был повторно использован как дескриптор мьютекса, который используется для предотвращения повреждения данных. Когда оригинальный дескриптор файла закрыт, дескриптор мьютекса закрывается и защита от повреждения данных теряется. Чем дольше служба работает, тем более поврежденными становятся ее индексы. В конце концов, кто-то замечает, что индекс возвращает неверные результаты. И когда вы пытаетесь перезапустить службу, она терпит неудачу, потому что ее файлы конфигурации были повреждены.

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

Как определить, каким приложением занят файл – Вадим Стеркин

Я просматривал рабочий календарь, когда почтовая программа Outlook 2010 внезапно сообщила об ошибке и закрылась. После перезапуска она не смогла открыть OST-файл, и сегодня я расскажу, как решил эту проблему за три минуты.

При запуске программа выдавала такую ошибку:

На работе у меня ОС и программы с английским интерфейсом, поэтому я приведу эквивалентный текст ошибки из русской версии Office.

Выполнен выход из Microsoft Outlook без правильного закрытия файла данных Outlook. Необходимо перезапустить Microsoft Outlook. Если ошибка повторится, обратитесь в службу поддержки.

Сообщение не блистало информативностью, а запуск почтового клиента в безопасном режиме, удерживая нажатой клавишу Ctrl, ничего не менял.

Я открыл папку программы и запустил диагностическую утилиту scanpst.exe. Она не смогла исправить проблему, но задала конкретное направление для поиска.

Суть сообщения сводилась к тому, что OST-файл занят каким-то другим приложением, что и являлось препятствием для Outlook. Вы уже догадались, какую утилиту я запустил дальше?

В Process Explorer я нажал Ctrl + F и ввел в поиск .ost. В результатах немедленно отобразился «захватчик». Щелкнув по нему, я перешел в нижнюю панель Process Explorer и выбрал в контекстном меню команду Close Handle.


Увеличить рисунок

Это решило проблему! Почтовая программа запустилась нормально, и я вернулся к работе.

Что делать, если веб-камера используется другим приложением

В комментариях читатель Игорь задал вопрос, можно ли использовать Process Explorer, чтобы определить, какое приложение использует веб-камеру. Да, процесс аналогичный, но искать нужно:

#vid

Я в курсе, что существует Unlocker, но его надо было еще скачать, а утилита Process Explorer находилась под рукой. К тому же, мораль записи не только в этих двух программах. Ведь прежде чем применять их, нужно было выйти на причину проблемы.

Upd. 11-Мар-13. Хотелось бы дополнить заметку моментами, всплывшими в ее обсуждении:

  • Если ничего нет под рукой, можно попытаться переименовать файл. Проводник может подсказать программу, использующую его.
  • В Windows 7 и выше можно воспользоваться встроенной программой «Монитор ресурсов» (resmon), где на вкладке CPU есть поиск дескрипторов.
  • Утилита NoVirus Thanks FileGovernor (описание)
  • Утилита NirSoft OpenFilesView (работает с ограничениями на х64).

А вам приходилось использовать Unlocker или Process Explorer в подобных ситуациях? Напишите в комментариях, какую из утилит вы применяли и в чем была проблема!

Обсуждение завершено.

Как узнать, какой процесс блокирует файл или папку в Windows

Как я могу узнать, какой процесс блокирует файл или папку в Windows? Например, при попытке удалить папку Windows сообщает следующее:

Операция не может быть завершена, так как эти папка или файл открыты в другой программе. Закройте папку или файл и повторите попытку.

Такая же ошибка может возникнуть при переименовании или удаления как папки, так и файла. Но как узнать, какая программа или приложение в настоящее время использует его и не позволяет удалить файл или папку?

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

1. Монитор ресурсов

Для поиска программы или процесса, открывшей файл, вы можете использовать Монитор ресурсов (Resource Monitor), который встроен в Windows 7, 8 и 10.

Откройте Монитор ресурсов, это можно сделать несколькими способами:

  • В поле для поиска введите «Монитор ресурсов» или resmon.exe:

  • Или в Диспетчере задач перейдите на вкладку «Производительность» и найдите кнопку «Открыть монитор ресурсов»:

В Мониторе ресурсов перейдите на вкладку ЦП (CPU). Используйте поле поиска в разделе «Связанные дескрипторы»

В результатах поиска в столбце «Образ» вы увидите, какая программа запустила процесс, блокирующий файл.

Здесь же вы можете кликнуть правой кнопкой мыши по любому найденному процессу и нажать «Завершить процесс», чтобы закрыть программу, блокирующую файл.

2. Process Explorer

Process Explorer — это официальная программа от Microsoft/SysInternals, которую можно скачать по ссылке: https://download.sysinternals.com/files/ProcessExplorer.zip

Описание программы на сайте Microsoft: https://docs.microsoft.com/ru-ru/sysinternals/downloads/process-explorer

Перейдите в FindHandle or DLL.

В текстовом поле "Handle or DLL substring:" введите путь до файла или папки. Будут показаны все процессы, которые имеют открытый обработчик на этот файл.

3. OpenedFilesView

OpenedFilesView это бесплатная программа не требующая установки, она покажет все открытые файлы, имеется возможность искать по имени или пути файла:

Сайт программы: https://www.nirsoft.net/utils/opened_files_view.html

4. LockHunter

LockHunter — это надёжная программа для разблокировки файлов.

Это бесплатный инструмент для удаления файлов, заблокированных неизвестным процессом. LockHunter полезен для борьбы с вредоносными программами и другими программами, которые блокируют файлы без причины. В отличие от других подобных инструментов, он удаляет файлы в корзину, поэтому вы можете восстановить их, если удалили по ошибке.

Ключевые особенности

  • Показывает процессы, блокирующие файл или папку
  • Предоставляет вам подробную информацию о процессе
  • Позволяет разблокировать, удалить, скопировать или переименовать заблокированный файл
  • Может удалить файл при следующей перезагрузке ОС
  • Позволяет убить процесс блокировки
  • Позволяет удалить процессы блокировки с жёсткого диска
  • Может выгружать DLL из процессов
  • Интегрируется в меню Проводника
  • Он удаляет файлы в корзину, поэтому вы можете восстановить их, если удалили по ошибке
  • Поддерживает как 32, так и 64 битную Windows

Сайт программы: https://lockhunter.com/

Связанные статьи:

Как в PowerShell узнать, какой процесс или программа блокируют файл

Если вы предпочитаете графический интерфейс, то смотрите «Как узнать, какой процесс блокирует файл или папку в Windows».

В данной статье будет показано, как с помощью PowerShell найти процесс, который блокирует файл или папку.

Команда OPENFILES позволяет администратору вывести список открытых файлов и папок, которые были открыты в системе.

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


 OPENFILES /<параметр> []

Список параметров:


 /Disconnect Отключение одного и более открытых файлов.
 
 /Query Отображение открытых файлов, локально и с сетевого
 ресурса.
 
 /Local Включает/отключает отображение локально открытых файлов.
 
 /? Вывод справки.

Для использования программы OPENFILES должен быть включён флаг «построение списка объектов».

Для его включения выполните команду:


 openfiles /local on

Обратите внимание, что после выполнения данной команды, чтобы изменения вступили в силу, необходимо перезагрузить компьютер.

После этих подготовительных действий, мы наконец можем узнать в PowerShell, какой процесс заблокировал файл (папку) от удаления и переименования. Следующий команды можно выполнить построчно или использовать в скрипте. Замените «C:\Windows\SoftwareDistribution» на папку или файл, которые вас интересуют:


 $FileOrFolderPath = "C:\Windows\SoftwareDistribution"
 $LockingProcess = CMD /C "openfiles /query /fo table | find /I ""$FileOrFolderPath"""
 Write-Host $LockingProcess

Данные о процессах открывших файл будут содержать следующие поля:

  • ID
  • Имя процесса
  • Открыть файл (<Путь>\<исполнимый файл>)

Если вы используете скрипт, то вы можете добавить дополнительную проверку, чтобы уменьшить риск непредсказуемого поведения, если файл или директория не существуют:


 $FileOrFolderPath = "C:\Windows\SoftwareDistribution"
 IF((Test-Path -Path $FileOrFolderPath) -eq $false) {
 Write-Warning "Файл или директория не существуют." 
 }
 Else {
 $LockingProcess = CMD /C "openfiles /query /fo table | find /I ""$FileOrFolderPath"""
 Write-Host $LockingProcess
 }
 

Связанные статьи:

Как узнать, какой процесс Windows использует файл

Вы когда-нибудь пытались удалить, переместить или переименовать файл только для того, чтобы получить предупреждение системы Windows с чем-то вроде одного из этих сообщений?

  • «Невозможно удалить файл: доступ запрещен»
  • «Произошло нарушение совместного использования»
  • «Исходный или целевой файл может использоваться»
  • «Файл используется другой программой или пользователем».
  • «Убедитесь, что диск не заполнен, не защищен от записи и что файл в настоящее время не используется»

Один из лучших способов обработки заблокированных файлов или папок - использовать бесплатную программу Microsoft Process Explorer .Программа была описана в другой статье, и вот как с ее помощью узнать, какая программа, DLL или дескриптор использует файл или папку. Вам нужно будет запустить его от имени администратора.

Как узнать какая программа использует файл

В Windows 7 или 8 системное сообщение может сообщить, какая программа использует файл. Если это не так или вы используете Windows XP, есть простой способ найти программу:

  1. Откройте Process Explorer от имени администратора.
  2. На панели инструментов найдите значок прицела справа (выделен на рисунке ниже).
  3. Перетащите значок на открытый файл или заблокированную папку.
  4. Исполняемый файл, использующий файл, будет выделен в основном списке отображения Process Explorer.

Как узнать, какой дескриптор или DLL использует файл

  1. Откройте Process Explorer от имени администратора.
  2. Введите сочетание клавиш Ctrl + F .Или щелкните меню «Найти» и выберите «Найти дескриптор или DLL».
  3. Откроется диалоговое окно поиска.
  4. Введите имя заблокированного файла или другого интересующего файла. Обычно достаточно частичных имен.
  5. Нажмите кнопку «Искать»,
  6. Список будет создан. Может быть несколько записей.
  7. Отдельный дескриптор в списке можно убить, выбрав его и нажав клавишу удаления. Однако при удалении дескрипторов необходимо соблюдать осторожность, поскольку могут возникнуть нестабильности.Часто просто перезагрузка освобождает заблокированный файл.

Process Explorer можно скачать здесь.

Связанная статья: Лучшее бесплатное средство для удаления файлов из удаленных файлов

Опубликуйте свой любимый совет! Знаете полезный технический совет или уловку? Тогда почему бы не опубликовать его здесь и не получить полную оценку? Щелкните здесь, чтобы сообщить нам свой совет.


Этот раздел советов поддерживает Вик Лори. Вик ведет несколько веб-сайтов с практическими рекомендациями, руководствами и учебными пособиями по Windows, в том числе сайт для изучения Windows и Интернета и еще один с советами по Windows 7.

Щелкните здесь, чтобы увидеть больше подобных вещей. Еще лучше получить технические советы, доставленные через ваш RSS-канал, или, как вариант, отправить RSS-канал по электронной почте прямо на ваш почтовый ящик.

.

Как определить, какой процесс Windows блокирует файл или папку - Справочный центр GSX

Последнее обновление: . Автор: Поддержка GSX (Янн) .

При попытке удалить, переместить или переименовать файл или папку вы получаете предупреждающее сообщение Windows; Операционная система отказывается завершить операцию.

Эта статья помогает определить процесс, который в настоящее время обрабатывает файл или папку, над которыми вы пытаетесь выполнить операцию обслуживания.

Sysinternals Process Explorer | Окна

Симптомы

При попытке удалить, переместить или переименовать файл вы получаете системное предупреждение Windows:

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

Как решить проблему

Один из самых простых способов работы с заблокированными файлами или папками - использовать Microsoft Sysinternals Process Explorer .

Определите, какая программа использует файл

С помощью Process Explorer найти программу очень просто:

  1. Открыть обозреватель процессов
    • Запуск от имени администратора .
  2. На панели инструментов найдите значок прицела справа.
  3. Перетащите значок и отпустите его на открытый файл или заблокированную папку.
  4. Исполняемый файл, который использует файл, будет выделен в основном списке отображения Process Explorer.

Определите, какой дескриптор или DLL использует файл

  1. Открыть обозреватель процессов
    • Запуск от имени администратора .
  2. Введите сочетание клавиш Ctrl + F .
    • Либо щелкните меню «Найти» и выберите «Найти дескриптор или DLL».
  3. Откроется диалоговое окно поиска.
  4. Введите имя заблокированного файла или другого интересующего файла.
    • Частичных имен обычно достаточно.
  5. Нажмите кнопку «Искать».
  6. Список будет создан.
    • Может быть несколько записей.

Снять блокировку файла или папки

Чтобы снять блокировку с файла, над которым вы пытаетесь выполнить операцию обслуживания, вам необходимо завершить соответствующий процесс. Отдельная программа или дескриптор в списке, предоставленном Process Explorer, могут быть уничтожены с помощью:

  1. Выбор процесса / дескриптора / записи программы.
  2. Нажатие клавиши удаления.

Будьте осторожны при удалении дескрипторов, поскольку это может привести к нестабильному поведению и нестабильности.

Загрузки

Вы можете скачать Sysinternals Process Explorer здесь.


Была ли эта статья полезной?

134 из 347 нашли этот материал полезным .

c ++ - как узнать, какой процесс имеет дескриптор файла по имени файла

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

  1. Авторизоваться зарегистрироваться
.

Как узнать, какой процесс использует файл в Java?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

powershell - как узнать, какой файл используется другим процессом

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

Как я могу найти идентификатор процесса, связанный с пакетным файлом?

Привет, сценарист! Как я могу найти идентификатор процесса, связанный с пакетным файлом?

- МБ

Привет, МБ. Вы знаете, сценаристы твердо верят в переработку. Зачем выбрасывать эту распечатку, если ее можно переработать в газетную бумагу? Зачем выбрасывать алюминиевую банку, если ее можно переплавить и использовать повторно? Зачем выбрасывать этот Эй, сценарист! Столбец , когда через несколько месяцев с его помощью можно будет ответить на чей-то вопрос?

Другими словами, сегодня здесь, в Центре сценариев, День переработки.Давным-давно (6 октября 2004 г., если быть точным) мы, , написали столбец , рассказывающий людям, как они могут определить, какие сценарии (по имени файла) выполняются на компьютере. Сегодня мы собираемся переработать этот столбец, используя небольшую вариацию, чтобы показать вам, как можно определить идентификатор процесса, связанный с любыми пакетными файлами, запущенными на вашем компьютере. Некоторые вещи, которые мы вам сегодня покажем, являются новыми, но одна вещь, которую не изменила в , - это отказ от ответственности: это решение работает только в Windows XP или Windows Server 2003.(Мы немного объясним почему.) И нет: мы действительно не знаем, как это сделать в любой более ранней версии Windows. Сожалею.

Если вы работаете в Windows XP или Windows Server 2003, следующий скрипт возвращает имя и идентификатор процесса любого пакетного файла, запущенного на компьютере:

 strComputer = «.» 

Установить objWMIService = GetObject («winmgmts: \\» & strComputer & «\ root \ cimv2»)

Установить colItems = objWMIService.ExecQuery («Выбрать * из Win32_Process»)

для каждого объекта в colItems Если InStr (objItem.CommandLine, «.bat») или InStr (objItem.CommandLine, «.cmd») Затем Wscript.Echo «Пакетный файл:» & objItem.CommandLine Wscript.Echo «Идентификатор процесса:» и objItem.ProcessID Конец, если следующий

Так как же работает этот скрипт? Хороший вопрос. Для начала привязываемся к службе WMI на локальном компьютере. (Хотя мы могли бы легко адаптировать сценарий для получения идентификаторов процессов в любых пакетных файлах, запущенных на удаленном компьютере, все, что нам нужно сделать, это установить значение переменной strComputer на имя этого удаленного компьютера.) После установления соединения мы затем используем эту строку кода для получения коллекции всех процессов, запущенных на компьютере:

 Set colItems = objWMIService.ExecQuery («Выбрать * из Win32_Process») 

Пока все хорошо, правда? Затем мы настраиваем цикл For Each для циклического перебора коллекции процессов. Внутри этого цикла мы используем метод InStr , чтобы узнать, можно ли найти строки .bat или .cmd где-нибудь в пределах значения свойства CommandLine , которое просто сообщает значение командной строки, используемое для запуска процесс.(Что, если бы вы начали процесс, дважды щелкнув значок в проводнике Windows? Нет проблем; в этом случае CommandLine равно значению командной строки, которое вы использовали бы, если бы вы запустили процесс из командной строки или из Запустите диалоговое окно .)

Например, вот какую информацию вы можете ожидать, когда посмотрите на значение свойства CommandLine:

 cmd / c «» C: \ Scripts \ test.cmd »» «C: \ Program Files \ Internet Explorer \ IEXPLORE.ИСПОЛНЯЕМЫЙ" «C: \ WINDOWS \ system32 \ NOTEPAD.EXE» C: \ Scripts \ cmdline.vbs 

Если вы посмотрите на первый процесс, вы увидите, что у нас запущен командный файл с именем Test.cmd. Выполняя поиск процессов, в которых свойство CommandLine включает строки .bat или .cmd (расширения файлов, используемые для пакетных файлов), мы можем определить, действительно ли какой-либо из этих процессов выполняет пакетные файлы. И как только мы это узнаем, получить идентификатор процесса для этих командных файлов становится тривиально.

Примечание .Да, вы правы: более точным тестом было бы проверить, являются ли последние четыре символа имени пути .bat или .cmd. Мы не сделали этого, потому что двойные кавычки в конце значения CommandLine - cmd / c «» C: \ Scripts \ test.cmd »« - немного усложняют ситуацию. Мы предполагаем, что в подавляющем большинстве случаев каждый раз, когда у вас есть .bat или .cmd в пути, у вас есть командный файл. Но если вы хотите улучшить то, что мы здесь сделали, тогда кто мы такие, чтобы вас остановить?

Если вам интересно, это также объясняет, почему наш сценарий работает только в Windows XP и Windows Server 2003: это потому, что свойство CommandLine доступно только на этих двух платформах.

Так что, если мы действительно найдем командный файл? В этом случае мы просто используем эти две строки кода для вывода имени процесса и идентификатора процесса:

 Wscript.Echo «Пакетный файл:» & objItem.CommandLine Wscript.Echo «Идентификатор процесса:» и objItem.ProcessID 

Вот и все.

Конечно, мы должны отметить, что, как написано, этот сценарий возвращает имя и идентификатор процесса для всех командных файлов, запущенных на компьютере. В своем вопросе, МБ, вы подразумевали, что вас интересует только пакетный файл конкретного .В этом случае просто измените оператор If-Then, чтобы он искал строку CommandLine, содержащую полное имя командного файла. Например, этот измененный сценарий проверяет, есть ли у каких-либо процессов строку Test.cmd где-нибудь в свойстве CommandLine:

 strComputer = «.» 

Установить objWMIService = GetObject («winmgmts: \\» & strComputer & «\ root \ cimv2»)

Установить colItems = objWMIService.ExecQuery («Выбрать * из Win32_Process»)

для каждого объекта в colItems Если InStr (objItem.CommandLine, «test.cmd») Затем Wscript.Echo «Идентификатор процесса:» и objItem.ProcessID Конец, если следующий

Если обнаружено, сценарий возвращает идентификатор процесса только для указанного командного файла.

Хотите получить действительно фантазии? Вот сценарий мониторинга, который предупреждает вас каждый раз, когда запускается новый командный файл:

 strComputer = "." 

Установить objWMIService = GetObject («winmgmts: \\» & strComputer & «\ root \ cimv2»)

Установите colMonitoredProcesses = objWMIService._ ExecNotificationQuery («выберите * из __instanceCreationEvent» _ & »В пределах 1, где TargetInstance - это« Win32_Process »») я = 0

Делай, пока я = 0 Установите objProcess = colMonitoredProcesses.NextEvent Если InStr (objProcess.TargetInstance.CommandLine, «.cmd») или _ InStr (objProcess.TargetInstance.CommandLine, «.bat») Затем Wscript.Echo «Пакетный файл:» & objProcess.TargetInstance.CommandLine Wscript.Echo «Идентификатор процесса:» & objProcess.TargetInstance.ProcessID Конец, если Петля

Мы не будем сегодня подробно обсуждать этот скрипт; для получения дополнительной информации см. веб-трансляцию Унция предотвращения: Введение в события WMI . (И да, мы - это снова перерабатываем старый материал, на этот раз старую веб-трансляцию Scripting Week 2. Разве мы не упоминали, что сегодня был День переработки?)


.

Смотрите также