Как определить, управляется ли процесс в C #? - PullRequest
5 голосов
/ 15 февраля 2011

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

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

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

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

Спасибо

Ответы [ 2 ]

6 голосов
/ 01 марта 2011

Для любых будущих пользователей 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.

1 голос
/ 15 февраля 2011

В коде получите полный путь к исполняемому процессу. Попробуйте использовать Assembly.Load в процессе. Если это работает, это сборка .Net:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...