2010-09-22 2 views
0

Можно ли определить для определенного процесса (id), какие файлы связаны с ним (т. Е. Исполняемый файл, а также все файлы, к которым в данный момент обращается этот процесс)?Обнаружение связанных файлов определенного процесса через WMI?

Я должен использовать WMI, если нет другого способа избежать NtQuerySystemInformation. У меня уже есть фрагмент кода, который может определить для определенного файла, какие процессы в настоящее время используют его. Но мне нужен эффективный путь для противоположного направления.

спасибо.

ответ

0

Я не могу найти что-либо с WMI, но если процесс является локальным, вы можете использовать Modules класса System.Diagnostics.Process.

Process[] processesByName = Process.GetProcessesByName("Myexe.exe"); 
foreach (ProcessModule module in processesByName[0].Modules) 
{ 
    Console.WriteLine(module.FileName); 
} 
+0

Спасибо. Но ваш подход ограничен двоичными файлами (dll или exe) процесса и оставляет данные, такие как txt, jpg и т. Д. – erich

+0

Process Explorer от SysInternals имеет способ найти их, поэтому должен быть способ (может быть неуправляемым) , но я боюсь, что не знаю. – Aliostad

0

Насколько я знаю, не существует класс WMI, чтобы запросить открытые ручки для запущенного процесса, необходимо использовать функцию NtQuerySystemInformation. проверьте этот link на демонстрационный проект, используя эту функцию в C#.

+0

Спасибо. Я также не нашел альтернативы NtQuerySystemInformation. Я посмотрю на демонстрационный проект. – erich

Смежные вопросы