Как проверить, использует ли программа.NET?

Мы можем проверить, используют ли запущенное приложение или программа платформу .NET для выполнения себя?

33
задан Jader Dias 17 January 2010 в 14:07
поделиться

5 ответов

Есть трюк, который я однажды выучил из списка вопросов для интервью Скотта Хэнселмана . Вы можете легко перечислить все программы, выполняющие .NET в командной строке, используя:

tasklist /m "mscor*"

Он перечислит все процессы, которые имеют mscor* среди загруженных модулей.

Аналогичный метод можно применить и в коде:

public static bool IsDotNetProcess(this Process process)
{
  var modules = process.Modules.Cast<ProcessModule>().Where(
      m => m.ModuleName.StartsWith("mscor", StringComparison.InvariantCultureIgnoreCase));

  return modules.Any();
}
41
ответ дан 27 November 2019 в 17:59
поделиться

Используйте System.reflection.Assembly.loadFrom Функция для загрузки файла .exe. Эта функция бросит исключение, если вы попытаетесь загрузить двоичный файл, который не является .NET assuse.

6
ответ дан 27 November 2019 в 17:59
поделиться

Я предлагаю загрузку dotnetreflector redgate's dotnetreflector и проверяю, может ли он открыть приложение.

2
ответ дан 27 November 2019 в 17:59
поделиться

Используйте интерфейсы CLR COM ICORPUBLISH и ICORPUBLISHPROCSESS. Самый простой способ сделать это от C # - заимствовать какой-нибудь код от отладчика Sharpdevelop и выполните следующие действия:

ICorPublish publish = new ICorPublish();
ICorPublishProcess process;

process = publish.GetProcess(PidToCheck);

if (process == null || !process.IsManaged)
{
    // Not managed.
}
else
{
    // Managed.
}
11
ответ дан 27 November 2019 в 17:59
поделиться

Программно вы получите начальное имя изображения с использованием API Win32, подобных NTQueryInformationProcess , или в использовании .Net System.diagnostics.process.getProcesses () и прочитать process.startinfo.filename .

Затем открыть и декодируйте заголовки PE этого изображения с использованием деталей, предписанных в статье MSDN ниже:

http://msdn.microsoft.com/en-us/magazine/cc301808.aspx

Предостережения: только обнаруживать .NET встроенные сборки, например, Не обнаружит Win32 EXES динамически хостинг CLR с использованием APIS CONHOST.

6
ответ дан 27 November 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: