Where does kernel32.dll GetVersionEx() get its information from?


  • Hello,

    Despite my protests, I've been tasked with installing an obsolete 10 year old application on Windows Server 2016. Unfortunately, the installer detects an incompatible Windows version and refuses to install the app. Since the customer absolutely needs to have the app AND Windows Server 2016, I need to somehow fool the installer into thinking that it's running on an older system.

    I do not have the source code for the app (3rd party), nor does it contain the list of supported OS versions in any of the plaintext config files. It most likely doesn't extract the info into %TEMP% either (I checked there and found nothing) - and if it does, it does not do it in a human-readable way.

    I know the app is old and written in Visual C++, so it's likely that it uses the GetVersionEx() function to obtain the version info. The installer log information it provides is also consistent with the output of this function.

    My first question is: where does that information come from, and whether it is feasible to spoof the version somehow. In case the answer is negative, I'd like to know what other ways of achieving the goal might there be.

    P.S. I tried compatibility mode - that didn't work.

    Thursday, December 6, 2018 12:32 PM