Jeśli starasz się ustalić, czy proces jest procesem NET, mogę zaproponować rozwiązanie inspirowane z odpowiedzią Dave Van den Eynde za w tym temacie: How do I tell if a win32 application uses the .NET runtime
"Aplikacja jest plikiem .NET, jeśli wymaga uruchomienia mscoree.dll.".
Biorąc to pod uwagę, sprawdzamy moduły procesów, aby sprawdzić, czy na liście znajduje się mscoree.
foreach (var process in Process.GetProcesses())
{
if (process.Modules.OfType<ProcessModule>().Any(m => m.ModuleName.Equals("mscoree.dll", StringComparison.OrdinalIgnoreCase)))
{
Console.WriteLine("{0} is a .NET process", process.ProcessName);
}
}
Mogę już powiedzieć, że jest sposób, ponieważ Process Explorer to robi. Teraz musimy dowiedzieć się, jak: p –
Spróbuj uderzyć exe za pomocą [Reflektora] [1], aby zobaczyć, co się pojawi. [1]: http://stackoverflow.com/questions/214764/best-free-decompiler-for-c-sharp-with-vs-integration – jp2code
Zauważ, że programy napisane w VB.NET generowania ten sam "typ" pliku wykonywalnego, jak te napisane w języku C#, i można tylko zgadywać, co zostało użyte do utworzenia aplikacji niezarządzanej. Jak wspomnieli inni, można odróżnić niezarządzanego od zarządzanego kodu. –