Как определить, управляется ли процесс в C#?
Немного поиска возвращает этот результат: какие процессы выполняют управляемый код и какую версию?
Однако мне интересно, есть ли "лучший" способ, чем просто перебирать загруженные модули? Кажется, немного странно искать строку "mscorwks.dll". Хотя чтение класса процессов в MSDN не указывает на очевидное решение.
Сделанные предположения
- .NET 4.0
- У меня есть "Процесс" в руках
Спасибо
2 ответа
Решение
Для любого будущего Google: я в конечном итоге использовал предложенный ответ, опубликованный здесь. Как проверить, использует ли программа.NET? (спасибо 0xA3!)
Process mProcess = //Get Your Process Here
foreach (ProcessModule pm in mProcess.Modules)
{
if (pm.ModuleName.StartsWith("mscor", StringComparison.InvariantCultureIgnoreCase))
{
return true;
}
}
Кроме того, поиск "mscorwks.dll", как упоминалось в моем первоначальном посте, не работает для.NET 4.0.
В коде получите полный путь к исполняемому процессу. Попробуй использовать Assembly.Load
на процессе. Если это работает, это сборка.Net:)