Skip to content

Commit ca20247

Browse files
committed
Check dwBuildNumber to determine newer Windows versions
1 parent 5ddf191 commit ca20247

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

ext/standard/info.c

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,34 @@ char* php_get_windows_name()
270270

271271
if (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion >= 10) {
272272
if (osvi.dwMajorVersion == 10) {
273-
if( osvi.dwMinorVersion == 0 ) {
274-
if( osvi.wProductType == VER_NT_WORKSTATION ) {
275-
major = "Windows 10";
273+
if (osvi.dwMinorVersion == 0) {
274+
if (osvi.wProductType == VER_NT_WORKSTATION) {
275+
if (osvi.dwBuildNumber >= 22000) {
276+
major = "Windows 11";
277+
} else {
278+
major = "Windows 10";
279+
}
276280
} else {
277-
major = "Windows Server 2016";
281+
if (osvi.dwBuildNumber >= 20348) {
282+
major = "Windows Server 2022";
283+
} else if (osvi.dwBuildNumber >= 19042) {
284+
major = "Windows Server, version 20H2";
285+
} else if (osvi.dwBuildNumber >= 19041) {
286+
major = "Windows Server, version 2004";
287+
} else if (osvi.dwBuildNumber >= 18363) {
288+
major = "Windows Server, version 1909";
289+
} else if (osvi.dwBuildNumber >= 18362) {
290+
major = "Windows Server, version 1903";
291+
} else if (osvi.dwBuildNumber >= 17763) {
292+
// could also be Windows Server, version 1809, but there's no easy way to tell
293+
major = "Windows Server 2019";
294+
} else if (osvi.dwBuildNumber >= 17134) {
295+
major = "Windows Server, version 1803";
296+
} else if (osvi.dwBuildNumber >= 16299) {
297+
major = "Windows Server, version 1709";
298+
} else {
299+
major = "Windows Server 2016";
300+
}
278301
}
279302
}
280303
}

0 commit comments

Comments
 (0)