You are assuming that the version number will exist as a string, and that's quite possibly not going to even exist - particularly in C, there are no "hard and fast" rules for how to handle version numbers. Unlike C# where it's a part of the assembly, in C it's a lot more free form, and any version numbering system is totally up to the developer.
So you might find C code that goes:
printf("Version: [%u.%u.%u]", vMajor, vMinor, vRev);
Or it could be
printf("Version: [3.2.6]");
Or even
printf("Version: %s", revisuionInformation);
And it doesn't even have to be the same from version to version!
It's even possible that the text "Version" is held in a table of different language words for globalisation purposes, and the code that uses it is thousands of lines of code away!
So "hunting" though an EXE looking for it is going to be a dodgy principal at best.
But ... read the EXE file into an array of bytes:
byte[] file = File.readAllBytes(pathToExeFile);
And start searching for "Version" in a loop.
It's simple enough to do, but be aware that it's probably not going to give you anything particularly useful.