Как определить, управляется ли процесс в C#?

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

Однако мне интересно, есть ли "лучший" способ, чем просто перебирать загруженные модули? Кажется, немного странно искать строку "mscorwks.dll". Хотя чтение класса процессов в MSDN не указывает на очевидное решение.

Сделанные предположения

  1. .NET 4.0
  2. У меня есть "Процесс" в руках

Спасибо

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:)

Другие вопросы по тегам