Получить имена DLL из запущенного процесса, возможно?

Я ищу способ получить имена DLL из запущенного процесса, извините, если я плохо выражаю себя.

Мне нужно «подключиться» к этому процессу через его имя или PID и получить имена DLL, которые он использует, если это возможно.

С уважением.

2
nl ja de
Да, это возможно ... пожалуйста, покажите исходный код ... что вы пробовали? что именно не работает?
добавлено автор Yahia, источник
Конечно, с помощью PInvoke API win32 - это EnumProcessModules (Ex). Невозможно представить, если это возможно на складе .NET без PInvoke или сторонних оберток.
добавлено автор Zarat, источник

1 ответы

Да, это возможно. Вы можете использовать класс Process . Он имеет свойство Modules , в котором перечислены все загруженные модули.

Например, чтобы отобразить все процессы и все модули на консоли:

Process[] processes = Process.GetProcesses();

foreach(Process process in processes) {
    Console.WriteLine("PID:  " + process.Id);
    Console.WriteLine("Name: " + process.ProcessName);
    Console.WriteLine("Modules: ");

    foreach(ProcessModule module in process.Modules) {
        Console.WriteLine(module.FileName);
    }
}

Вы можете, конечно, проверить Process.Id для ПИД-кода, который вы хотите и т. Д.

Для получения дополнительной информации ознакомьтесь с документацией для этого класса: -

http://msdn.microsoft.com/en-us/ библиотека/system.diagnostics.process.aspx

Примечание. Этот код может быть расстроен для определенных системных процессов, к которым у вас не будет доступа.

6
добавлено
Вторая петля foreach - вот что сделал трюк для меня! Так просто, но все же ускользнул от меня. Спасибо, что поделились, Ллойд! Ты спас мне кучу головных болей :)
добавлено автор kayleeFrye_onDeck, источник
@Sam Yeh. Я думаю, вы могли бы написать какую-то заглушку, которую вы можете сбросить и выполнить, которая вернет вам список, хакерство: /
добавлено автор Lloyd, источник
Этот код также будет расстроен, если выполняется процесс, выполняющий его 32-битный и 64-битный модули. "32-битные процессы не могут получить доступ к модулям 64-битного процесса.
добавлено автор Sam, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot