Si es un .exe .NET (o .dll para el caso), que va a tener una dependencia de mscoree.dll que se puede ver mediante el examen con Dependency Walker o algo similar.
Si desea hacerlo programáticamente, puede tomar this VB project como punto de partida.
Sin embargo, esto no le dirá el idioma con seguridad. No se puede distinguir un C# de un programa VB.NET (u otro lenguaje .NET) o un C++ de un programa C (u otro lenguaje que no sea .NET). Hay algunas cosas que pueden descartar que uno u otro sea el único idioma utilizado, o que uno u otro sea más probable. Incluso podría haber código no administrado haciendo uso de mscoree.dll de alguna manera extraña.
Ya puedo decir que hay una forma, ya que Process Explorer hace eso. Ahora tenemos que encontrar cómo: p –
Intente golpear el exe con [Reflector] [1] para ver qué sucede. [1]: http://stackoverflow.com/questions/214764/best-free-decompiler-for-c-sharp-with-vs-integration – jp2code
Tenga en cuenta que los programas escritos en VB.NET generar la el mismo "tipo" de ejecutable que los escritos en C#, y solo puedes adivinar qué se usó para crear la aplicación no administrada. Como mencionaron los otros, puede distinguir el código no gestionado del gestionado. –