Se si sta cercando di determinare se un processo è un processo NET, posso suggerire una soluzione ispirata dalla risposta Dave Van den Eynde In questo argomento: How do I tell if a win32 application uses the .NET runtime
"Un'applicazione è un eseguibile .NET se richiede l'esecuzione di mscoree.dll.".
Detto questo, si controllano i moduli del processo per vedere se mscoree è elencato.
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);
}
}
fonte
2011-12-08 15:22:32
Posso già dire che c'è un modo, dal momento che Process Explorer lo fa. Ora dobbiamo scoprire come: p –
Prova a colpire l'exe con [Reflector] [1] per vedere cosa succede. [1]: http://stackoverflow.com/questions/214764/best-free-decompiler-for-c-sharp-with-vs-integration – jp2code
Si noti che i programmi scritti in VB.NET generare il stesso "tipo" di eseguibile di quelli scritti in C#, e puoi solo indovinare cosa è stato usato per creare l'applicazione non gestita. Come menzionato dagli altri, puoi distinguere unmanaged dal codice gestito. –