X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0FC483858417 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1711034171; bh=9sdp7SvTXDePgajfyfSI+RAtnAS49U4iMbwHoiWUXuk=; h=Date:To:Subject:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=LUJhe7LbiY20Jzm7kYsyG9y8UvD4eZtB9/loIalBronEinuBGm5EyLSygN6dxRd09 x7akyQdLkz2I1UkqD8iSimhN8x9ZiofhKrVAI2k1Ze3hrsNwxnYz4D6FavAaFmToZw M+Z92XBCyfZEe5kbet8jbA4hBPajOJAnb1jnfhoI= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 48E8F3858CD1 Date: Thu, 21 Mar 2024 16:15:45 +0100 To: cygwin AT cygwin DOT com Subject: Re: GetVersionEx() depreciated, what should be used instead for Windows 7/8/10? Message-ID: Mail-Followup-To: cygwin AT cygwin DOT com References: <0d8daf74-2861-8b08-b47c-28cf5d3b991f AT t-online DOT de> <538aa134-b079-12ec-76fe-5a60fc77c3ee AT t-online DOT de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <538aa134-b079-12ec-76fe-5a60fc77c3ee@t-online.de> X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Corinna Vinschen via Cygwin Reply-To: cygwin AT cygwin DOT com Cc: Corinna Vinschen Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" On Mar 21 09:58, Christian Franke via Cygwin wrote: > Corinna Vinschen via Cygwin wrote: > > On Mar 20 12:39, Christian Franke via Cygwin wrote: > > > Corinna Vinschen via Cygwin wrote: > > > > You have to create an application with an application manifest not > > > > supporting your OS. > > > > > > > > For Cygwin apps, this occured when you built, say, an executable under > > > > Windows 8.1 before Windows 10 support was added to the Cygwin toolchain: > > > > the manifest linked to the Cygwin executable didn't yet contain a GUID > > > > entry for Windows 10 support. > > > > > > > > In this case, RtlGetVersion returns an OS version 6.3 even when running > > > > under the 10.0 kernel. This behaviour exists back 'til Windows Vista. > > > Could not reproduce the latter on Win10. I tested with recent Win10 and > > > Win11 and also found a Win10 1511 (and Slackware 1.1.2, Win3.1, OS/2, ...) > > > in my VM image museum. > > > > > > Regardless of the exe manifest, RtlGetVersion and RtlGetNtVersionNumbers > > > return the correct versions: > > > 10.0.22621 (Win11 22H2) > > > 10.0.19045 (Win10 22H2) > > > 10.0.10586 (Win10 1511) > > > > > > Without a manifest, GetVersionEx returns: > > > 6.2.9200 (Win8) I just gave it a try on W11. The results are even more funny than I anticipated: I created a simple application just calling GetVersionEx, RtlGetVersion and RtlGetNtVersionNumbers. Linked with our Cygwin default manifest claiming W10 compatibility, the result is the expected: GetVersionEx : 10.0.22631 RtlGetVersion : 10.0.22631 RtlGetNtVersionNumbers: 10.0.22631 The "Operating system context" in Task Manager is empty. Next I linked against a Windows 8.1 manifest: GetVersionEx : 6.3.9600 RtlGetVersion : 10.0.22631 RtlGetNtVersionNumbers: 10.0.22631 So GetVersionEx reports Windows 8.1, RtlGetVersion/ RtlGetNtVersionNumbers both report W10. The "Operating system context" in Task Manager reports "Windows 8.1" No surprise there. Next I linked against a Windows 7 manifest: GetVersionEx : 6.2.9200 RtlGetVersion : 10.0.22631 RtlGetNtVersionNumbers: 10.0.22631 So GetVersionEx reports Windows 8, not Windows 7. However, the "Operating system context" in Task Manager reports "Windows 7" I also tried this with a Vista manifest: GetVersionEx : 6.2.9200 RtlGetVersion : 10.0.22631 RtlGetNtVersionNumbers: 10.0.22631 "Windows Vista" So Task Manager reports the right context per the manifest, but GetVersionEx doesn't go below Windows 8. Same goes for Windows 10... GetVersionEx : 6.2.9200 RtlGetVersion : 10.0.19045 RtlGetNtVersionNumbers: 10.0.19045 "Windows Vista" as well as for Windows 8.1: GetVersionEx : 6.2.9200 RtlGetVersion : 6.3.9600 RtlGetNtVersionNumbers: 6.3.9600 "Windows Vista" So, yeah, with your observations especially on older W10 versions and with 8.1 doing the same thing, I guess we can safely drop the extra call to RtlGetNtVersionNumbers now. After such a long time, I don't know on which version of Windows we observed the problem. For those interested in patch forensics, I searched the archives and came up with two mail threads referring to GetVersionEx and RtlGetVersion: https://cygwin.com/pipermail/cygwin/2013-November/211795.html https://cygwin.com/pipermail/cygwin/2014-June/215836.html Unfortunately I found *no* thread talking about RtlGetNtVersionNumbers, so the only information we have now is the commit message of https://cygwin.com/cgit/newlib-cygwin/commit/?id=48511f3d3847c Thanks, Corinna -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple