Tell me more ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I want to know which programming language is used to programming the applications installed in my windows box.

Supposed output should be something like this: word.exe C/C++(MFC) iexplorer.exe C/C++(SDK) firefox.exe C/C++(SDK) virtualbox.exe C/C++(Qt) hedisql.exe Delphi etc.

C/C++ (90%) Delphi(05%) ...

Is there any program helps?

share|improve this question
1  
Your question does not make any sense (to me anyway). Please edit it to make it more specific. – Randolph West Aug 20 '12 at 3:43
"Statics" does not make sense -- it's either a variable storage class, a sub-division of physics/mechanical engineering, or the stuff that makes socks stick together in the dryer, none of which seem to fit this context. – Daniel R Hicks Aug 20 '12 at 3:48
C and C++ are two distinct languages. It may be impossible to tell them apart afterwards, though, so perhaps you should have 3 categories "C", "C++" and "C or C++ (uncertain)" – MSalters Aug 20 '12 at 10:49
actually it is easy to detect whether a program use c or c++, because of the name mangling scheme. it is even possible to determine what precentage of c or c++ used in a program. – Jichao Aug 21 '12 at 2:11

closed as not constructive by Randolph West, Luke, 8088, Diogo, soandos Aug 20 '12 at 18:14

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

1 Answer

Basically, a general purpose program like this can't exist. In theory you might make something that can give you the output from your question, but there are so many programming languages in existence that being able to do this for more than a handful is a daunting task. Worse, it would either have to profile the application, just look at the list of loaded dlls, or do some sort of static analysis.

Now, to make the question even more tricky, MFC and Qt aren't even really new languages. Where should this hypothetical program draw the line? Does including Boost make your program a Boost program?

For more fun, Visual Studio never makes a pure C++ program. The function that calls main is always C, even in a C++ app.

You best bet for getting any useful information is probably to profile the app using the SysInternals Process Explorer and look at what Dlls the program is loading. Then, you can't decide what type of application is by looking at what libraries it's loading.

Edit: This assumes you're trying to find this out at run-time. If you're trying to find it out at compile time, that should be pretty easy, assuming you have the source code.

Also getting the architecture the program is compiled for should be pretty easy. Though, if it's running, the architecture should be visible in the Task Manager. I don't think this is what the original poster was asking about though.

share|improve this answer
Actually there exists programs which can detect the programming language and platform, or even the packer, but these programs does not provide the statics part(i mean count all the programs and give out some conclution). – Jichao Aug 20 '12 at 8:08
I would love to see this program. The architecture it's compiled for should be pretty easy to get, (now mentioned in my answer) but I'm very curious how it does the rest. – Patrick M Aug 20 '12 at 17:52
It is not as complicated as you thought, a bunch of tools could do this job well, but these programes could not count. – Jichao Aug 21 '12 at 2:12
Since there are "a bunch" of these tools would you please give a couple of examples, both for me, and other people later? Also, why might these programs not count? – Patrick M Aug 23 '12 at 1:50
Peid, Die, FileInfo etc. – Jichao Aug 23 '12 at 2:16

Not the answer you're looking for? Browse other questions tagged or ask your own question.